2012-03-13 6 views
3

Je lis des informations à partir d'un périphérique et il me renvoie des données en format entier et j'ai besoin de convertir cela en caractères ASCII en utilisant C#.Convertir un nombre binaire en caractères ascii

Voici un exemple de données que je dois convertir. Je reçois la valeur entière 26990 en arrière de mon périphérique et j'ai besoin de convertir en ASCII. Je viens juste de savoir que pour cette valeur, le résultat souhaité serait "ni".

Je sais que la valeur entière 26990 est égale à 696e en hexadécimal, et 110100101101110 en binaire, mais je voudrais savoir comment faire la conversion car je ne peux pas me débrouiller tout seul.

Quelqu'un peut-il vous aider s'il vous plaît?

Un grand merci,

Karl

Répondre

5
int i = 26990; 
char c1 = (char)(i & 0xff); 
char c2 = (char)(i >> 8); 

Console.WriteLine("{0}{1}", c1, c2); 
0

Si l'appareil envoie octets vous pouvez utiliser quelque chose comme ceci:

byte[] bytes = new byte[] { 0x69, 0x6e }; 
string text = System.Text.Encoding.ASCII.GetString(bytes); 

Dans le cas contraire, si l'appareil envoie des nombres entiers, vous pouvez utiliser quelque chose comme ceci:

byte[] bytes = BitConverter.GetBytes(26990); 
string text = System.Text.Encoding.ASCII.GetString(bytes, 0, 2); 

Dans les deux cas, text contiendra "ni" après l'exécution. Notez que dans ce dernier cas, vous devrez peut-être faire face à des problèmes d'endianness.

De plus Référence:

0

Utilisez BitConverter et Encoding pour effectuer la conversion:

class Program 
{ 
    public static void Main() 
    { 
     int d = 26990; 
     byte[] bytes = BitConverter.GetBytes(d); 
     string s = System.Text.Encoding.ASCII.GetString(bytes); 
     // note that s will contain extra NULLs here so.. 
     s = s.TrimEnd('\0'); 
    } 
} 
Questions connexes