Chronicle Bytes: как записывать байты в обратном порядке на машине с прямым порядком байтов?
я использую
Bytes<U>
Интерфейс отсюда . Базовый буфер создается следующим образом:
Bytes<?> buf = Bytes.elasticHeapByteBuffer(MAX_SIZE);
buf.writeLong(l); // writes in little endian
Учитывая, что мой машинный порядок байтов имеет обратный порядок байтов, как я могу вместо этого писать байты в обратном порядке?
Спасибо.
Редактировать: согласно этой диаграмме кажется, что байты хроники не поддерживают эту функцию.
1 ответ
Базовая реализация использует любой собственный порядок байтов ЦП. т.е. с прямым порядком байтов на amd64 и ARM, с прямым порядком байтов на Sparc.
Вы можете поменять порядок с
Bytes<?> buf = Bytes.elasticHeapByteBuffer(MAX_SIZE);
buf.writeLong(Long.reverseLong(l));
long l2 = Long.reverseLong(buf.readLong(l));
Большинство компьютеров в наши дни имеют обратный порядок байтов, поэтому это проблема только при обмене данными с системой с прямым порядком байтов.