Java等价物解包结构('d',s.decode('hex'))[0]

2024-09-25 08:40:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读一个存储二进制文件的文件。 在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中做同样的解码,我们有什么相似的吗?在


Tags: 文件import二进制java解码structxa0decode
1条回答
网友
1楼 · 发布于 2024-09-25 08:40:22

由于这些字节是以小端顺序排列的,作为英特尔处理器上的C代码,请使用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个字节。在


如果数据已经是字节数组,请执行以下操作:

^{pr2}$

上述进口商品包括:

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

相关问题 更多 >