0

在 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 中模拟最后一种方法?

4

1 回答 1

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;
}
于 2012-06-06T13:03:13.123 回答