【发布时间】:2016-12-26 11:33:08
【问题描述】:
我需要将数字转换为字节数组,然后再转换回数字。 问题是字节数组是可变大小的,所以我需要根据他的字节长度转换一个数字,我想出的方法是:(Java)
private static byte[] toArray(long value, int bytes) {
byte[] res = new byte[bytes];
final int max = bytes*8;
for(int i = 1; i <= bytes; i++)
res[i - 1] = (byte) (value >> (max - 8 * i));
return res;
}
private static long toLong(byte[] value) {
long res = 0;
for (byte b : value)
res = (res << 8) | (b & 0xff);
return res;
}
这里我使用 long 因为 8 是我们可以使用的最大字节数。 这种方法对正数非常有效,但我似乎无法使用负数进行解码。
编辑:为了测试这一点,我尝试处理值 Integer.MIN_VALUE + 1 (-2147483647) 和 4 个字节
【问题讨论】:
-
不知道您的问题现在是否已解决,但是...看看我的答案是否可以帮助您处理较大的负值。
标签: java arrays byte data-conversion