Nov 18

The following code can be used to convert a byte array (containing the bytes of a long) into a long.

	public static long byteArrayToLong(byte[] bytes) {
		long l = 0;
		for (int i=0; i<8; i++) {
			l <<= 8;
			l ^= (long) bytes[i] & 0xff;
		}
		return l;
	}

This is the reverse of “How to convert a long to a byte array“.

written by objects \\ tags: , , , ,

May 16

The Double class contains two methods that return a representation of a floating point value according to the IEEE 754 floating-point “double format” bit layout.

The first, doubleToLongBits() does not preserve NaN and returns it as 0x7ff8000000000000L.

The second, doubleToRawLongBits() does preserve NaN and returns the representation of the actual NaN value.

The long returned by these methods can then be converted to a byte array.

byte[] array = longToByteArray(Double.doubleToRawLongBits(doubleValue));

written by objects \\ tags: , , ,

May 16

The following code can be used to extract the 8 bytes from a long value and return them as a byte array

public static byte[] longToByteArray(long data) {
    return new byte[] {
        (byte)((data >> 56) & 0xff),
        (byte)((data >> 48) & 0xff),
        (byte)((data >> 40) & 0xff),
        (byte)((data >> 32) & 0xff),
        (byte)((data >> 24) & 0xff),
        (byte)((data >> 16) & 0xff),
        (byte)((data >> 8 ) & 0xff),
        (byte)((data >> 0) & 0xff),
    };
}

written by objects \\ tags: , , , ,