gpt4 book ai didi

java - 将 Double 从 Delphi/Pascal 转换为 Java

转载 作者:可可西里 更新时间:2023-11-01 11:18:32 24 4
gpt4 key购买 nike

我需要使用 Delphi/Pascal 语言读取在 Windows SO 中创建的二进制文件。我知道这个文件是固定长度的,前 8 个字节是双字节。我将此文件从 Windows SO 复制到 Ubuntu SO。当我尝试使用 Java 语言在 Ubunto SO 内部读取此文件时,我看到:双 = 84000

[0, 0, 0, 0, 0, -126, -12, 64]

所以我在 Java 中创建相同的 double (84000),运行 Ubuntu SO:

Double yourDouble = (double) 84000;
byte[] bytes = new byte[8];
java.nio.ByteBuffer.wrap(bytes).putDouble(yourDouble);

查看字节数组我看到:

[64, -12, -126, 0, 0, 0, 0, 0]

很明显,字节数组是倒置的。有没有办法读取这个文件?或者我需要反转字节数组?

编辑:是不是因为Big Endian和Little Endian倒置了?

最佳答案

Java,至少在公开场合,以大端字节顺序表示数据,即使在内部它可能出于效率原因使用不同的字节。至少在 Windows 上,Delphi 是小端。所以你需要颠倒字节顺序。

对于整型数据类型,您也会遇到同样的问题。以及任何 16 位或 32 位字符数据。

关于java - 将 Double 从 Delphi/Pascal 转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25087637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com