gpt4 book ai didi

java - 使用 ByteBuffer 在 Java 中发布复制字节字符串

转载 作者:行者123 更新时间:2023-11-29 07:38:14 27 4
gpt4 key购买 nike

我正在尝试用 Java 复制我在 Objective-C(在 iOS 上)中生成的字节字符串,但遇到了问题。这是我要生成的字符串:

"\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"

我从一个包含 4 个整数的数组中获取该字符串 - [1,1,0,0] - 其中每个整数有 4 个字节。在查看了这里的一堆问题之后,我尝试使用 ByteBuffer 在 Java 中构造该字符串,如下所示:

ByteBuffer bytes = ByteBuffer.allocate(16);
bytes.putInt(1);
bytes.putInt(1);
bytes.putInt(0);
bytes.putInt(0);

String byteString = new String(bytes.array());

然而这给了我:

"\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"

当我解压它时,我得到的整数数组是 [16777216, 16777216, 0, 0]。显然我做错了什么,我希望有人能给我指出正确的方向。

最佳答案

iOS 是小端法,因此 4 字节整数的最低有效字节在前。

Java 字节缓冲区 defaults to big-endian ,所以反之亦然。

The initial order of a byte buffer is always BIG_ENDIAN

你可以改变它

bytes.order(ByteOrder.LITTLE_ENDIAN);

关于java - 使用 ByteBuffer 在 Java 中发布复制字节字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060263/

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