2010-08-31 14 views
37

Je me demandais s'il y avait un échappement hexadécimal similaire (\ x) en Java comme en C++. Par exemple: x Échapper à Java?

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

Il n'y a pas hex (\ x) échapper à Java de ce qu'il semble jusqu'à présent. Y a-t-il une alternative aussi simple à utiliser sans avoir à concaténer un ensemble de nombres hexadécimaux?

Répondre

47

Les chaînes Java sont toujours codées en UTF-16, de sorte qu'elle utilise un échappement Unicode: \u0048. Les caractères octaux sont également pris en charge:

+0

Merci pour la réponse rapide. Cela fonctionne parfaitement! – David

+0

@David: N'oubliez pas de cocher la case 'réponse choisie' :) – helios

3

Notez que octal les flux unicode sont analysés assez tôt.
Il peut venir comme une surprise quand

String s = "text\u000d\u000a"; 

provoque une erreur du compilateur
parce que vous devriez avoir utilisé "text\015\012" ou "text\r\n"

+2

-1: Les échappements octaux sont autorisés dans les chaînes littérales et ne sont pas analysés plus tôt que vous le suggérez. L'extrait de code ci-dessus fonctionne comme prévu. Voir 3.10.6. Séquences d'échappement pour les littéraux de caractère et de chaîne dans http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html –

+0

@adrian - vous avez raison, j'ai des évasions octal et unicode échappe le mauvais chemin - je vais corriger la réponse (si possible). – tschodt

+0

Ok, et je vais supprimer mon downvote –