tva*_*nt2 1 java bytebuffer bytearray
我正在尝试复制我在Objective-C(在iOS上)用Java生成的字节字符串但是遇到了麻烦.这是我想要制作的字符串:
"\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
Run Code Online (Sandbox Code Playgroud)
我从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());
Run Code Online (Sandbox Code Playgroud)
然而,这给了我:
"\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
Run Code Online (Sandbox Code Playgroud)
当我解压缩时,我得到的是一系列的[16777216, 16777216, 0, 0].显然我做错了,我希望有人可以指出我正确的方向.
iOS是little-endian,因此4字节整数的最低有效字节首先出现.
Java ByteBuffer 默认为big-endian,因此相反.
字节缓冲区的初始顺序始终为BIG_ENDIAN
你可以改变它
bytes.order(ByteOrder.LITTLE_ENDIAN);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |