Question

J'ai une chaîne que je dois convertir en tableau équivalent d'octets dans .NET.

Cela devrait être facile, mais je vais avoir une crampe au cerveau.

Était-ce utile?

La solution

Vous avez besoin utiliser un codage ( System.Text.Encoding ) pour indiquer à .NET ce que vous attendez comme sortie. Par exemple, dans UTF-16 (= System.Text.Encoding.Unicode ) :

var result = System.Text.Encoding.Unicode.GetBytes(text);

Autres conseils

Commencez par définir le codage souhaité: vous devez connaître un peu sur Unicode d'abord.

Déterminez ensuite quel System.Text.Encoding qui correspond à. Ma carte de référence .NET décrit la plupart des problèmes courants et explique comment obtenir une instance (par exemple, une propriété statique de Encoding ou en appelant un Encoding.GetEncoding .

Enfin, déterminez si vous souhaitez utiliser tous les octets en même temps (méthode la plus simple): appelez Encoding.GetBytes (chaîne) une fois que vous avez terminé) ou si vous devez le décomposer en morceaux - dans ce cas, vous voudrez utiliser Encoding.GetEncoder , puis encodez un peu à la fois . Le codeur garde l’état entre les appels, par exemple, au cas où vous auriez besoin de rompre au milieu d’un caractère.

Quel encodage utilisez-vous? Konrad a le secret, mais il y en a d'autres et vous pourriez obtenir des résultats loufoques avec le mauvais:

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)

XXX peut être:

ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8

Comme ceci:

    string test = "text";
    byte[] arr = Encoding.UTF8.GetBytes(test);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top