【发布时间】:2011-11-14 10:46:17
【问题描述】:
我正在尝试将 int 转换为 byte[] 并再次返回,但我认为我在此过程中做错了什么。我的代码基本上是:
byte[] array = new byte[4];
array[3] = (byte) ( num & 0xFF);
array[2] = (byte) ((num >> 8) & 0xFF);
array[1] = (byte) ((num >> 16) & 0xFF);
array[0] = (byte) ((num >> 24) & 0xFF);
还有:
for (int i =0; i < 4; i++) {
num = (num << 8) + (array[i] & 0xff);
}
如果我从数字 72 开始,例如,在将其转换为字节数组并返回后,我得到的数字是 795108710。我错过了一步,还是我的字节序混淆了?感谢您的宝贵时间。
【问题讨论】:
-
你试过用相反的edian吗?
-
您在开始之前是否将
num初始化为0? -
当我使用相反的字节序时,我得到的数字是 1717920815。我在开始之前将 num 初始化为 0。
-
您不允许使用 int 的符号。提取符号。然后将数字设为绝对值
-
你的两个代码sn-ps不匹配;您正在填写
array,但从buffer读取。array填充后包含什么,里面的值是什么?如果它们有意义,那么问题出在第二个 sn-p 上。
标签: java bytearray endianness