Исходя из мира C # и углубляясь в Java, я понял, что здесь нет неподписанных байтов / целых. Я пытаюсь выяснить, как проще всего создать пользовательские двоичные сообщения, например, в следующем примере:
Как видите, некоторые целочисленные значения нужно поместить в 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-байтовых полях? Лонги