2011-08-08 2 views
0

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

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

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

Благодаря

ответ

7

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

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

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

1

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

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

Смежные вопросы