使用Python的Struct和在J中读取值

2024-05-15 10:35:43 发布

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

我想导出一个二进制格式,然后在Java中读取二进制文件,但是我无法获得正确的值,例如

f.write(struct.pack('<f', 21.988))

在Java中我有这个值:8.962863E27

我尝试发送一个二进制文件,并将输出匹配到用java编写的ubjson库中,起初我使用Big-endian标记,但不起作用,当我使用Little-endian时,它是这样工作的。

谢谢你的指导。

编辑:库的某些部分

^{pr2}$

Tags: 文件标记格式二进制javastructpackwrite
1条回答
网友
1楼 · 发布于 2024-05-15 10:35:43

您的Java应用程序使用的是相反的endianess;您编写的是little-endian,但是Java将其解释为big-endian:

>>> struct.unpack('>f', struct.pack('<f', 21.988))
(8.962863280123082e+27,)

写入big-endian,Java将正确读取值:

^{pr2}$

如果这不起作用,还有其他原因导致输出没有正确解释。UBJSON specification对endianess非常清楚,应该全部编码为big-endian。在

相关问题 更多 >