Какой самый простой способ установить пользовательские сообщения двоичных данных в Java? - PullRequest
5 голосов
/ 20 марта 2012

Исходя из мира C # и углубляясь в Java, я понял, что здесь нет неподписанных байтов / целых. Я пытаюсь выяснить, как проще всего создать пользовательские двоичные сообщения, например, в следующем примере:

enter image description here

Как видите, некоторые целочисленные значения нужно поместить в 3-битный слот. другие значения являются однобитовыми флагами или полями другого размера. Из того, что я прочитал, я должен работать с «следующим большим» примитивом, таким как построение двоичных байтов в целых числах с использованием побитовых операторов. Есть ли другие способы? Я использовал несколько примеров, которые я нашел в других местах, таких как (Примечание: этот пример не соответствует рисунку выше), чтобы получить первый структурированный байт:

shiftedValue1 = (value1 & 0xFF) << 5;
shiftedValue2 = (Value2 & 0xFF) << 2;
shiftedValue3 = (Value3 & 0xFF) << 1;
shiftedValue4 = (Value4 & 0xFF);
finalvalue = (shiftedValue1 & 0xFF) | (shiftedValue2 & 0xFF) | (shiftedValue3 & 0xFF) | (shiftedValue4 & 0xFF);

Есть ли лучший способ построить эти байты? Что я использую на 4-байтовых полях? Лонги

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Возможно, вы сможете использовать ByteBuffer, как описано, например, здесь . Это должно упростить манипулирование байтовым массивом, особенно с учетом таких вещей, как endianess.

1 голос
/ 20 марта 2012

Кажется, что это было бы проще сделать с помощью byte[] (байтовые массивы) или BitSet с.

...