Question

Comment construire une chaîne de séquence d'échappement en notation hexadécimale.

Exemple:

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

Je veux pouvoir créer des chaînes avec des valeurs hexadécimales comprises entre 00 et FF comme ceci (dans cet exemple, 1B)

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

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

Était-ce utile?

La solution

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

Vous pouvez le faire, mais il ne s'agirait que d'une chaîne et devrait être converti en un entier ou en un octet pour pouvoir lire sa valeur.

Vous pouvez toutefois affecter une valeur hexadécimale littérale à un entier ou à un octet:

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

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

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

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

Mais je ne pense pas que ce soit ce que vous vouliez?

Autres conseils

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

"\x9Good compiler"
"\x9Bad compiler"

Dans le premier cas, le " \ x9 " is tab - la séquence d'échappement s'arrête là car 'G' n'est pas un caractère hexadécimal valide. Dans la deuxième chaîne, " \ x9Bad " est tout une séquence d'échappement, vous laissant avec un caractère Unicode aléatoire et " compilateur ".

Je vous suggère d'utiliser plutôt la séquence d'échappement \ u:

"\u0009Good compiler"
"\u0009Bad compiler"

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

Ceci est un peu en dehors de la question initiale bien sûr, mais on y a déjà répondu:)

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

Console.WriteLine( "Look, I'm so happy : \u263A" );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top