我想将整数转换为字节。我在Actionscript中有一个示例,我需要将其转换为Java。为了简单起见,我们仅假设一个数字1234。这是我的Java代码:

int[] a = {1234};
ByteBuffer byteBuffer = ByteBuffer.allocate(a.length * 4);
IntBuffer intBuffer = byteBuffer.asIntBuffer();
intBuffer.put(a);
byte[] array = byteBuffer.array();
for (int i=0; i < array.length; i++) {
    Log.i(T, i + ": " + array[i]);
}


这给了我以下结果:

0 : 0
1 : 0
2 : 4
3 : -46


在动作脚本中,我有以下内容:

var c:ByteArray = new ByteArray;
c.writeInt(1234);
for(var p:uint=0; p<c.length; p++) {
    trace(p+" : "+c[p]);
}


结果:

0 : 0
1 : 0
2 : 4
3 : 210


我在做什么错,为什么结果不同?谢谢!

最佳答案

Java使用无符号字节。

默认情况下,ActionScript可能已签名。

3 : -46 //signed
3 : 210 //unsigned


这可以将每个字节打印为无符号:

System.out.println((b < 0 ? 256 + b : b));

10-01 03:29
查看更多