`
xmanliang
  • 浏览: 22547 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 二进制数据大端转小端

阅读更多

 

 1.用python写个脚本插入数据,python的字节序应该和C++一致的,但python不太熟,为了赶时间放弃此方案

2.修改java代码,增加大端转小端的功能,觉得此方案花费时间不多,靠谱点!
于是写了所谓的第一版,就是想通过将数据写入ByteArrayOutputStream中后调用其toArray方法转换为二进制数组后再将此数据顺序颠倒后插入数据库中,现在想想此方法挺傻B的,单纯的认为转化下位置就OK了,写到一半觉得很麻烦,于是想到万能的谷歌,搜索后发现有人推荐使用ByteBuffer,但没找到合适的例子,于是研究了下ByteBuffer的方法终于成功了,字节序转换部分的代码示例如下:
/**
 * 字段包含两个long型(长度16),一个float型(长度4),一个长度为5的float数组(长度20)
 * 即总长度=16+4+20
 * 初始化一个ByteBuffer,长度为40,且字节序设置为小端,然后将要插入的数据放到ByteBuffer中
*/
ByteBuffer buffer=ByteBuffer.allocate(40).order(ByteOrder.LITTLE_ENDIAN);
buffer.putLong(IID);
buffer.putLong(GID);
buffer.putFloat(similarity);
buffer.putFloat(f[0]);
buffer.putFloat(f[1]);
buffer.putFloat(f[2]);
buffer.putFloat(f[3]);
buffer.putFloat(f[4]);
//此方法并非真的清空,只是重新的位置设为0
buffer.clear();
//将ByteBuffer中的数据通过get方法写入一个二进制数据,将此数组插入数据库中即可
buffer.get(gfresult);
分享到:
评论

相关推荐

    十进制转十六进制包含大小端设置_大小端_matlab_十进制_十六进制_

    这两种模式涉及到多字节数据如何在字节序列中排列,对于理解和处理二进制数据至关重要。本文将详细讨论大小端模式,并通过MATLAB实现一个将十进制数转换为十六进制数的函数,同时允许用户选择大小端模式。 首先,...

    java-16进制4字节转Float

    浮点数在计算机内部通常是用二进制的格式存储的,具体分为两部分:符号位、指数部分和尾数部分。在Java中,浮点数有两种主要形式:单精度浮点数(float)和双精度浮点数(double),它们分别使用32位和64位来存储。 ...

    二进制数据解码工程.rar_bottlevw8_closelyeuv_二进制数据解码_二进制解码_解码数据文件

    这个过程可能涉及到编程语言如C++、Python等,以及专用的工具或库,例如在Python中,我们可以使用struct模块来处理二进制数据,或者在Java中使用DataInputStream类进行解码。 压缩包中的"二进制数据解码工程"文件很...

    16进制单精度(32位)浮点型转换器源码

    在IT领域,16进制和浮点型数据的转换是一项重要的基础知识,特别是在处理二进制数据、网络通信以及低级编程时。本主题聚焦于一个特定的工具或源码,即“16进制单精度(32位)浮点型转换器”,它能够将32位的浮点数在...

    java-16位内存数据转化为double型

    1. **读取二进制或十六进制数据**:从内存或文件中读取16位或更多位的数据。 2. **转换为二进制表示**:如果原始数据是十六进制,需要先将其转换为二进制形式。 3. **创建ByteBuffer并转换**:使用`java.nio....

    二进制与各种类型的数据转换.docx

    这通常涉及字节对齐和字节顺序的问题,需要注意endianness(小端或大端)。 4. **位移操作**: - 位移操作符(如`和`>>`)用于将二进制位向左或向右移动。在Java中,`tmp0 ;`将`tmp0`的二进制值向左移动24位,`tmp...

    JAVA转byte[]为int,long,double

    以上就是关于“JAVA转byte[]为int,long,double”的知识讲解,理解这些转换对于处理二进制数据至关重要,尤其是在网络通信、序列化和反序列化等场景中。通过熟练掌握这些转换,你可以更好地处理和解析不同数据类型的...

    16进制转换float

    因此,当处理二进制数据时,我们需要编写自定义的函数来完成这个转换,这通常涉及位操作和二进制转换。 文件"C浮点数与字符转换wlzl.exe"可能是一个执行此转换的实用程序,它可以读取16进制表示的多字节数据并将其...

    从二进制到数据结构

    在IT领域,从二进制数据到数据结构的转换是一个重要的技术环节,特别是在处理底层系统交互、网络通信或文件解析时。本主题将深入探讨如何使用C#编程语言及其相关框架,如.NET 3.5,来实现这个过程。 首先,我们需要...

    sts.zip_爱立信2G PM二进制解析

    在学习和实践这个过程时,你需要熟悉二进制数据处理的基本概念,如位运算、字节序(大端、小端)以及可能涉及的网络协议知识。同时,掌握至少一种编程语言(如Python、C++或Java)和相应的二进制解析库会非常有帮助...

    把十六进制的位串转化为byte数组

    而字节数组(byte array)是Java中存储二进制数据的基本容器,它可以直接与内存交互,因此在处理原始二进制数据时非常有用。 在描述中提到的博文链接虽然无法直接访问,但根据标题,我们可以推测博主可能分享了一种...

    华为U1900系列读取CDR话单,读取.bill二进制文件。 C#

    由于是二进制文件,每个字段可能采用特定的编码方式,如大端或小端序,需要根据华为的文档进行解析。 在C#中,我们可以通过`System.IO.BinaryReader`类来读取二进制文件。首先,创建一个`BinaryReader`实例,然后...

    Java二进制Class文件格式解析

    Java二进制Class文件是Java程序的核心组成部分,它包含了Java类或接口的完整定义和元数据,被Java虚拟机(JVM)用来加载并执行代码。《The JavaTM Virtual Machine Specification》(Second Edition)和《Inside the ...

    Netty进制转换乱码问题

    Netty的ByteBuf支持大端序和小端序,确保两端使用相同顺序。 7. **调试与日志**:在解决问题的过程中,日志是非常重要的工具。通过打印接收到的字节数组和解码后的字符串,可以帮助定位问题。 总结,Netty中的进制...

    大端(Big Endian)与小端(Little Endian)简介

    #### 二、大端与小端的定义 1. **大端表示法(Big Endian)**: - 在大端表示法中,多字节数据的最高有效字节被存储在最低地址处,而最低有效字节则被存储在最高地址处。 - 举例来说,如果我们要存储十六进制数`...

    Java 解析 Linux C结构体

    注意Java的字节序通常是小端,而C编译器可能会根据目标架构选择大端或小端。如果两端字节序不同,还需要进行字节序转换。 4. **处理字符串**:C语言的字符串是零终止的,所以在Java中读取时需要找到第一个零值来...

    dat文件转换txt

    2. 解析二进制数据:根据文件的结构解析数字,这可能需要理解文件的字节顺序(如大端或小端)和数据类型(如整数、浮点数)。 3. 转换数字:将二进制表示的数字转换为十进制格式。 4. 写入.txt文件:将转换后的十...

    bin_conv.7z

    2. **编程语言中的二进制操作**:学习如何在各种编程语言(如C、C++、Python、Java等)中处理二进制数据,包括读取、写入、转换和操作二进制文件。 3. **二进制转换算法**:介绍不同的转换算法,例如使用移位运算、...

    java串口通讯 物联网设备通讯dtu

    例如,你可能需要将接收到的字节流转换为二进制或十六进制字符串,或者将自定义格式的二进制数据解析为有意义的信息。这通常涉及到位操作和字节顺序处理,例如大端序和小端序的转换。 DTU的数据传输通常基于特定的...

Global site tag (gtag.js) - Google Analytics