在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中模拟最后一个方法?
答案 0 :(得分:3)
更新:最简单的方法是使用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;
}