Для чего используются первые 2 байта в строке Java

1

Я отправляю строку с java-сервера на C-клиент. В клиенте в начале строки всегда есть 2 дополнительных байта. Я думаю, что java использует их для указания размера строки?

Я отправляю строку с этим кодом DataOutputStream dos = new DataOutputStream (socket.getOutputStream()); dos.writeUTF(randomString);

  • 6
    Как вы отправляете это?
  • 0
    Случайно ли вы отправляете строку, вызывая writeUTF ?
Показать ещё 1 комментарий
Теги:
string

3 ответа

3

Если вы отправляете строку на сервер, вызывая writeUTF, формат проводов действительно включает длину строки, отправленной как short в первых двух байтах:

Записывает строку в указанный DataOutput с использованием модифицированной кодировки UTF-8 машинным образом. Во-первых, два байта записываются так, как будто методом writeShort количество байтов. Это значение представляет собой количество фактически выписанных байтов, а не длину строки. (выделено мной)

Вы можете посмотреть специфику происходит в исходном коде здесь.

2

Изучая исходный код, java-документ сообщает нам:

Записывает строку в указанный DataOutput с использованием модифицированной кодировки UTF-8 машинным образом.

Во-первых, два байта записываются так, как будто методом writeShort указывается количество байтов. Это значение представляет собой количество фактически выписанных байтов, а не длину строки.

Нажмите на исходный код GrepCode.

1

Думаю, это байт-ордер UTF-8.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню