2010-08-31 3 views
37

Мне было интересно, есть ли аналогичный hex (\ x) escape в Java, как есть в C++. Например: x Побег в Java?

 
char helloworld[] = "\x48\x45\x4C\x4C\x4F\x20\x57\x47\x52\x4C\x44"; 
printf("%s", helloworld); 

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

ответ

47

Строки в Java всегда кодируются в UTF-16, поэтому он использует escape-код Unicode: \u0048. Октальные символы также поддерживаются: \110

+0

Спасибо за быстрый ответ. Он отлично работает !. – David

+0

@David: Не забудьте проверить отметку «выбранного ответа» :) – helios

3

Обратите внимание, что октал Unicode escapes разобраны довольно рано.
Это может стать неожиданностью, когда

String s = "text\u000d\u000a"; 

вызывает ошибку компилятора
, потому что вы должны были использовать "text\015\012" или "text\r\n"

+2

-1: Октальные экраны допускаются в строковых литералах и не анализируются раньше, чем вы предлагаете. Вышеприведенный фрагмент кода работает так, как ожидалось. См. 3.10.6. Последовательности выхода для символов и строковых литералов в http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html –

+0

@adrian - вы правы, я получил восьмеричные escape-последовательности, и unicode избегает неправильных путь - я исправлю ответ (если это возможно). – tschodt

+0

Хорошо, и я удалю свой нижний предел –