C # convertir Char en octet (représentation hexadécimale)

Cela semble être un problème facile, mais je ne peux pas comprendre.

J'ai besoin de convertir ce personnage en octet(représentation hexadécimale), mais si j'utilise

byte b = Convert.ToByte('<');

Je reçois 60 (représentation décimale) au lieu de 3c.

22
demandé sur DropTheCode 2012-09-21 13:20:37

5 réponses

60 == 0x3C.

Vous avez déjà votre bonne réponse mais vous la regardez de la mauvaise façon.

0x est le préfixe hexadécimal
3C est 3 x 16 + 12

21
répondu Henk Holterman 2015-12-01 10:09:11

, Vous pouvez utiliser les BitConverter.ToString méthode pour convertir un tableau d'octets en hexadécimal chaîne:

string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') });

, Ou simplement:

string hex = Convert.ToByte('<').ToString("x2");
13
répondu Darin Dimitrov 2012-09-21 09:22:02

Obtenez 60 (représentation décimale) au lieu de 3c.

Non, vous n'avez aucune représentation. Vous obtenez un byte contenant la valeur 60 / 3c dans une représentationinterne . Lorsque vous le regardez , c'est-à-dire lorsque vous le convertissez en chaîne (explicitement avec ToString() ou implicitement), vous obtenez la représentation décimale 60.

Ainsi, vous devez vous assurer que vous explicitement convertir l'octet string, spécification de la base, vous souhaitez. ToString("x"), par exemple convertira un nombre enreprésentation hexadécimale :

byte b = Convert.ToByte('<');  
String hex = b.ToString("x");
5
répondu Heinzi 2012-09-21 09:25:26
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
4
répondu cc4re 2012-09-21 09:23:56

Vous voulez convertir la valeur numérique en hexadécimal en utilisant ToString("x"):

string asHex = b.ToString("x");

Cependant, sachez que le code pour convertir le caractère "

3
répondu Matthew Watson 2014-11-24 13:37:28