Chaîne en tableau d’octets bruts

J’ai une chaîne qui contient des données binarys (données non textuelles ).

Comment est-ce que je convertis ceci en tableau d’octets brut?

Une chaîne en C # – par définition – ne contient pas de données binarys. Il consiste en une séquence de caractères Unicode.


Si votre chaîne ne contient que des caractères Unicode dans le jeu de caractères ASCII (7 bits), vous pouvez utiliser Encoding.ASCII pour convertir la chaîne en octets:

byte[] result = Encoding.ASCII.GetBytes(input); 

Si vous avez une chaîne contenant des caractères Unicode dans la plage u0000-u00ff et que vous voulez les interpréter en octets, vous pouvez convertir les caractères en octets:

 byte[] result = new byte[input.Length]; for (int i = 0; i < input.Length; i++) { result[i] = (byte)input[i]; } 

C’est une très mauvaise idée de stocker des données binarys dans une chaîne. Toutefois, si vous devez absolument le faire, vous pouvez convertir une chaîne binary en un tableau d’octets à l’aide de la page de codes 1252. N’utilisez pas la page de code 0 ou vous perdrez certaines valeurs en langues étrangères. Il se trouve que la page de codes 1252 convertit correctement toutes les valeurs d’octet de 0 à 255 en Unicode et inversement.

Certains programmes VB6 mal écrits utilisent des chaînes binarys. Malheureusement, certaines lignes sont tellement nombreuses qu’il est presque impossible de convertir tout cela en tableaux byte () en une seule fois.

Tu as été prévenu. Utilisez à vos risques et périls:

 Dim bData() As Byte Dim sData As Ssortingng 'convert ssortingng binary to byte array bData = System.Text.Encoding.GetEncoding(1252).GetBytes(sData) 'convert byte array to ssortingng binary sData = System.Text.Encoding.GetEncoding(1252).GetSsortingng(bData) 

Voici un moyen:

 public static byte[] StrToByteArray(ssortingng str) { System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding(); return encoding.GetBytes(str); } 
 System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); byte[] theBytes = encoding.GetBytes("Some Ssortingng"); 

Remarque, il est possible que vous souhaitiez utiliser d’autres formats de codage.