2024-09-25 08:40:22 发布
网友
我正在读一个存储二进制文件的文件。 在python中,我可以很容易地解码文件
>>> s = '0000000000A0A240' >>> s.decode('hex') '\x00\x00\x00\x00\x00\xa0\xa2@' >>> import struct >>> struct.unpack('d', s.decode('hex'))[0] 2384.0
现在我想在Java中做同样的解码,我们有什么相似的吗?在
由于这些字节是以小端顺序排列的,作为英特尔处理器上的C代码,请使用ByteBuffer来帮助翻转字节:
ByteBuffer
String s = "0000000000A0A240"; double d = ByteBuffer.allocate(8) .putLong(Long.parseUnsignedLong(s, 16)) .flip() .order(ByteOrder.LITTLE_ENDIAN) .getDouble(); System.out.println(d); // prints 2384.0
这里我使用Long.parseUnsignedLong(s, 16)作为一种快速的方法来完成decode('hex')的8个字节。在
Long.parseUnsignedLong(s, 16)
decode('hex')
如果数据已经是字节数组,请执行以下操作:
上述进口商品包括:
import java.nio.ByteBuffer; import java.nio.ByteOrder;
由于这些字节是以小端顺序排列的,作为英特尔处理器上的C代码,请使用
ByteBuffer
来帮助翻转字节:这里我使用
Long.parseUnsignedLong(s, 16)
作为一种快速的方法来完成decode('hex')
的8个字节。在如果数据已经是字节数组,请执行以下操作:
^{pr2}$上述进口商品包括:
相关问题 更多 >
编程相关推荐