Java相当于Ruby的String.unpack为“q *”

时间:2012-06-06 11:17:58

标签: java ruby

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

1 个答案:

答案 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;
}