将byte []数组转换为unsigned Long java

时间:2017-11-19 14:32:11

标签: java byte long-integer unsigned

请你回答一下与java有关的疑问..

我想将MAX_VALUE无符号long(即2(pow)64 -1)存储为字节数组,然后读取byte[]数组以获取此{{1} }}。 由于所有数据类型都是有符号的,因此想知道如何在MAX_VALUE数组的每个索引中存储0xFF(每个字节)值,即忽略有符号位。请建议如何做到这一点。 感谢。

1 个答案:

答案 0 :(得分:3)

这样的东西?

public class Utils {
    static byte[] longToByteArray(long value) {
        return ByteBuffer.allocate(8).putLong(value).array();
    }

    static long byteArrayToLong(byte[] array) {
        return ByteBuffer.wrap(array).getLong();
    }

    public static void main(String[] args) {
        long maxValue = Long.parseUnsignedLong("FFFFFFFFFFFFFFFF", 16);
        byte[] b = longToByteArray(maxValue);
        System.out.println("b = " + Arrays.toString(b));

        long value = byteArrayToLong(b);
        System.out.println("value = " + value);
        System.out.println("hex value = " + Long.toUnsignedString(value, 16));
    }
}