Java - отправка неподписанных байтов через TCP-соединение - PullRequest
1 голос
/ 08 августа 2011

Поскольку байты Java являются знаковыми значениями, и я пытаюсь установить соединение через сокет TCP с программой на C #, которая ожидает, что байты будут без знака.

Я не могу изменить код в части C #.

Как я могу отправлять эти байты в правильном формате с использованием Java.

Спасибо

Ответы [ 2 ]

7 голосов
/ 08 августа 2011

Нет, байты Java имеют значение со знаком . Обычно байты C # равны без знака . (Вам потребуется тип sbyte для ссылки на подписанные байты; я не могу вспомнить, когда в последний раз я использовал sbyte.)

Однако, это не должно иметь никакого значения с точки зрения передачи данных по проводам - ​​обычно вы просто отправляете любые двоичные данные, которые вы получили (например, то, что вы прочитали из файла), и обе стороны будут выполнять правильная вещь. Байт со значением -1 на стороне Java будет проходить как байт со значением 255 на стороне C #.

Если вы можете рассказать нам больше о точно о том, что вы пытаетесь сделать (каковы данные), мы можем помочь вам больше, но я сильно подозреваю, что вы можете просто игнорировать разницу в этом случай.

1 голос
/ 08 августа 2011

Это не имеет значения. Числа - это просто строки битов, и тот факт, что они подписаны или не подписаны, не имеет значения, что касается битов. И это биты, которые передаются, так что вся эта подписанная / неподписанная информация не имеет значения.

1100101010101111 по-прежнему 1100101010101111 независимо от того, подписан / не подписан.

...