0

Javaでは、次のルビーコードで記述された整数をデコードしようとしています。

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 に答える