Может ли строка содержать <0x00> вместе с присвоенными значениями в java - PullRequest
0 голосов
/ 23 января 2020

Если я объявляю одну строку, есть ли вероятность того, что строка может содержать <0x00> вместе с назначенными данными?

Например:

String s = "Stack";

Может ли результат строки появиться как :

Стек <0x00> <0x00> <0x00> <0x00> <0x00> <0x00> <0x00> <0x00> <0x00> <0x00> <0x00> <0x00>

1 Ответ

1 голос
/ 23 января 2020

Да, как:

String s = "Stack\u0000\u000";

В отличие от C / C ++, где строки заканчиваются символом '\0'.

Если строка должна передаваться как байтовый массив в В нативном коде java есть трюк, доступный для UTF-8, модифицированного UTF-8, который также превращает '\u0000' в многобайтовую последовательность: DataOutputStream.writeUTF(String)

Примечание что \u0000 (как некоторые другие управляющие символы) недопустимы в XML.

Кстати, терминатор строки 0 считается его изобретателем самой большой ошибкой в ​​C. Это также повлияло на наборы команд процессора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...