在 Java 中,我试图解码由以下 ruby 代码编写的整数:
def int_to_hex_string(i)
[i].pack('q').reverse
end
对于数字 42,生成的字符串将为"\x00\x00\x00\x00\x00\x00\x00*"
.
以下 Ruby 代码将反转该过程:
def hex_string_to_int(s)
s.reverse.unpack('q*').first
end
如何在 Java 中模拟最后一种方法?
更新:最简单的方法是使用 java.math.BigInteger:
return new BigInteger(bytes).intValue();
或者,如果一个人真的想自己实现它:
public static int unpackInteger(byte[] bytes) {
int sum = 0;
int mul = 1;
for (int i=bytes.length-1; i >= 0; i--) {
sum += (mul * (bytes[i] & 0xff));
mul <<= 8;
}
return sum;
}