2010-08-31 5 views
37

Mi chiedevo se esiste una fuga esadecimale simile (\ x) in Java come in C++. Per esempio: x Fuga in Java?

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

Non c'è esadecimale (\ x) fuga in Java da quello che sembra così lontano. Esiste un'alternativa altrettanto facile da usare senza dover concatenare un gruppo di numeri esadecimali?

risposta

47

Le stringhe in Java sono sempre codificate in UTF-16, quindi utilizza un'uscita Unicode: \u0048. Sono supportati anche i caratteri ottali: \110

+0

Grazie per la rapida risposta. Funziona perfettamente !. – David

+0

@David: non dimenticare di selezionare il segno "risposta scelta" :) – helios

3

Si noti che gli escape di unicode ottali vengono analizzati molto presto.
Può essere una sorpresa quando

String s = "text\u000d\u000a"; 

causa un errore di compilazione
perché si dovrebbe avere utilizzato "text\015\012" o "text\r\n"

+2

-1: gli escape ottali sono consentiti nei valori letterali stringa e non vengono analizzati in anticipo come suggerito. Lo snippet di codice sopra riportato funziona come previsto. Vedi 3.10.6. Sequenze di escape per caratteri e stringhe letterali in http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html –

+0

@adrian - sei corretto, ho ottenuto octal escape e unicode sfugge all'errore in giro - correggerò la risposta (se possibile). – tschodt

+0

Ok, e rimuoverò il mio downvote –