2008-11-12 6 views
12

Comment créer une chaîne de séquence d'échappement en notation hexadécimale.C# Chaîne de notation hexadécimale de construction

Exemple:

string s = "\x1A"; // this will create the hex-value 1A or dec-value 26 

Je veux être en mesure de construire des chaînes avec six pans valeurs entre 00 à FF comme celui-ci (dans cet exemple 1B)

string s = "\x" + "1B"; // Unrecognized escape sequence 

Peut-être il y a une autre façon de faire chaînes hexadécimales ...

+0

Je ne pense pas que je comprends - dans cet exemple, vous voulez avoir un seul caractère avec le code 26 ansi? – Grzenio

+0

\ x et \ u les deux sont des séquences d'échappement pour les caractères Unicode. ''\ u03A9'' et'' \ x03A9'' impriment tous deux le symbole omaga ('Ω') sur la sortie de la console. – RBT

Répondre

19

Vous ne stockez pas les valeurs hexadécimales dans les chaînes.

Vous pouvez, mais ce serait juste une chaîne, et devrait être converti en un entier ou un octet pour lire réellement sa valeur.

Vous pouvez attribuer une valeur hexadécimale comme un littéral à un int ou un octet si:

Byte value = 0x0FF; 
int value = 0x1B; 

Ainsi, son facilement possible de passer un littéral hexadécimal dans votre chaîne:

string foo = String.Format("{0} hex test", 0x0BB); 

qui créerait cette chaîne "126 hex test".

Mais je ne pense pas que ce soit ce que tu voulais?

+0

Merci, l'explication Byte était exactement ce que je voulais – humcfc

3

Il existe un code d'échappement '\ u' pour les codes de caractères hexadécimaux 16 bits.

Console.WriteLine("Look, I'm so happy : \u263A"); 
29

S'il vous plaît essayer d'éviter la séquence d'échappement \x. C'est difficile à lire parce que là où ça s'arrête dépend des données. Par exemple, quelle différence y a-t-il en un coup d'œil entre ces deux chaînes?

"\x9Good compiler" 
"\x9Bad compiler" 

Dans le premier, le « \ x9 » est l'onglet - la séquence d'échappement arrête là parce que « G » est pas un caractère hexadécimal valide. Dans la deuxième chaîne, "\ x9Bad" est une séquence d'échappement, vous laissant un caractère Unicode aléatoire et un "compilateur".

Je vous suggère d'utiliser la \ u séquence d'échappement à la place:

"\u0009Good compiler" 
"\u0009Bad compiler" 

(Bien sûr, pour onglet vous utiliseriez \t mais j'espère que vous voyez ce que je veux dire ...)

C'est un peu en dehors de la question originale bien sûr, mais cela a déjà été répondu :)

Questions connexes