Я получаю данные с прямым порядком байтов по UDP и конвертирую их в обратный порядок байтов. Источник говорит, что целые числа подписаны, но когда я меняю местами байты подписанных целых чисел (в частности, 16-битных), я получаю нереалистичные значения. Когда я меняю их как неподписанные целые числа, я получаю то, что ожидал. Я полагаю, что исходная документация может быть неправильной и фактически отправляет беззнаковые 16-битные целые числа. Но какое это имеет значение? Все значения должны быть положительными и меньше 16-битного INT_MAX, поэтому переполнение не должно быть проблемой. Единственное, о чем я могу думать, это то, что (1) документация неверна И (2) я не обрабатываю бит знака должным образом, когда выполняю замену с порядком байтов со знаком.
У меня действительно два вопроса:
1) Если переполнение не является проблемой, неважно, читаю ли я в подписанные или неподписанные целые числа.
2) Отличается ли порядок байтов между знаковыми и беззнаковыми значениями (т.е. нужно ли обрабатывать знаковый бит по-разному)?
Я думал, что преобразование порядка байтов выглядело одинаково как для значений со знаком, так и для значений без знака, например для 16-битных value = value&0xff00 >> 8 | value&0x00ff << 8
.
Спасибо