Возможно swapShort
неправильный. Я пока не нашел способа в объекте ChannelBuffer изменить порядок байтов.
16 бит это 2 байта. Почему вы читаете 4? Почему вы читаете по байтам вместо того чтобы прочитать short сразу? Зачем все в строки преобразовывать?
Netty по умолчанию использует BIG ENDEAN. Не понимаю зачем вам его куда-то переводить.
Я пытался сразу брать readShort()
и а также readUnsignedShort()
но все равно значение заоблачные выходят, или слишком малые.
readBytes(2)
вроде должен брать 2 байта, но не так. Например, если дать 0x8A2C
то readBytes(2)
прочитает только 8А. Поэтому я пишу readBytes(4)
Что-то вы не то делаете. Советую вам учить Java и изучать Netty библиотеку.
Я вообще PHP
разработчик. В своих проектах я использовал ваш продукт. А заказчик купил аппарат Sat-Lite. Вот, приходится разбираться)))
К сожалению времени обучать вас Java у меня нету. Если хотите разобраться, то в интернете полно ресурсов.
Можете подсказать, надо ли менять порядок байтов, если да, то примерно как? Если нет, в каком направлении дальше искать?
Порядок обычно не надо вручную менять. Я советую смотреть существующие протоколы для примера.
Я не прошу вас обучать Java. Я просто прошу примерно, в каком направлении искать ответы. Я тоже понимаю что, что-то не так у меня.
Вот сам протокол. Перамбула - 16ти битный целый беззнаковый. Порядок записи байтов - обратный (от
младшего к старшему, интеловский, как в x86).
Протокол
swapShort
Я использую чтобы с BIG ENDIAN перевести в LITTLE Endian