2011-10-06 9 views
2

J'ai une application C# dans laquelle j'essaye de faire une chaîne qui contiendra près de la fin \ 0. Je n'ai pas réussi à faire ça.
je l'ai fait:.NET C# caractère spécial

string msg = "GGGG..8"; 
byte []b = System.Text.encoding.GetBytes(msg); 

mais b où « .. » sont la représentation est 46 et non 00. Je veux au lieu de .. d'avoir \ 0 \ 0
L'objectif final était d'avoir la chaîne contient le message.

+0

Votre code ne compile pas, comme « System.Text. encoding.GetBytes (msg) "n'est pas valide. * Quel * encodage utilisez-vous? –

Répondre

5

Création d'une chaîne appropriée est facile:

string msg = "GGGG\0\08"; 

On ne sait pas ce que le codage vous essayiez à utiliser dans la deuxième ligne, mais je m'attendrais à plus à un octet codages pour encoder ce '0' comme 0 octet.

Si vous voulez prendre un message qui à l'origine comprend les périodes et les convertir à « \ 0 » caractères, c'est facile aussi:

string msg = "GGGG..8"; 
string replaced = msg.Replace('.', '\0'); 
+0

Merci, je suis tellement mauvais dans cette question de caractères et de conversion et ASCII. Connaissez-vous une bonne référence pour comprendre cela? –

+1

Ce n'est pas clair * exactement * ce qui vous intéresse. Mon article sur les chaînes * peut * aider: http://csharpindepth.com/Articles/General/Strings.aspx –

+0

Thnaks pour l'article, je ment quand on utilise unicode quand convertir? quand il est représenté en UTF7 ou 8 etc .. –

0

Cela devrait fonctionner:

string msg = "GGGG..8\0"; 

Si pas de chance, essayez ceci:

string msg = "GGGG..8" + '\0'; 
+0

Désolé, je voulais au lieu de .. \ 0 \ 0 –

+0

Je pense que le "à la fin" signifie "finalement" dans ce cas, pas "à la fin de la chaîne". –

+0

Oui, mais je l'ai également écrit pour être dupliqué \ 0 et fait un exemple, mais je vais le changer –