gpt4 book ai didi

java - 在 PHP 中从 Java DataOutputStream 读取二进制数据时的整数格式是什么?

转载 作者:可可西里 更新时间:2023-10-31 23:08:37 25 4
gpt4 key购买 nike

我知道这可能不是最好的主意,但我一直在尝试读取使用 Java 的 DataOutputStream 编码的 PHP 文件。

具体来说,在 Java 中我使用:

dataOutputStream.writeInt(number);

然后在 PHP 中我使用以下方法读取文件:

$data = fread($handle, 4);
$number = unpack('N', $data);

奇怪的是,PHP 中唯一给出正确值的格式字符是“N”,它应该表示“unsigned long(总是 32 位,大端字节顺序)”。我以为 java 中的 int 总是有符号的?

是否有可能以这种方式可靠地读取用 Java 编码的数据?在这种情况下,整数只需要为正数。它可能还需要非常大,所以 writeShort() 是不可能的。否则我当然可以使用 XML 或 JSON 或其他东西。

最佳答案

这很好,只要您不需要那么多。 l(而不是 N)可以在大端机器上运行。

但是请注意,您可以存储的最大数字是 2,147,483,647,除非您想在 Java 端进行一些数学运算以获得正确的负整数来表示所需的无符号整数。

请注意,有符号的 Java 整数使用二进制补码方法来表示负数,因此它不是翻转位那么简单。

关于java - 在 PHP 中从 Java DataOutputStream 读取二进制数据时的整数格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419512/

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