'Chronicle Bytes: How to write bytes in big endian order on a little endian machine?
I'm using the Bytes<U>
interface from here. The underlying buffer is created as follow:
Bytes<?> buf = Bytes.elasticHeapByteBuffer(MAX_SIZE);
buf.writeLong(l); // writes in little endian
Given my machine byte order is little endian, how can I write the bytes in big endian instead?
Thank you.
Edit: According to this chart, it seems like chronicle bytes does not support this function.
Solution 1:[1]
The underlying implementation uses whatever is the native byte order of the CPU. i.e. little-endian on amd64 and ARM, big-endian on Sparc.
You can swap the order with
Bytes<?> buf = Bytes.elasticHeapByteBuffer(MAX_SIZE);
buf.writeLong(Long.reverseLong(l));
long l2 = Long.reverseLong(buf.readLong(l));
Most computers these days are little-endian so it's only an issue when sharing data with a big-endian system.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Peter Lawrey |