2012-09-21 28 views

Respuesta

19

60 == 0x3C.

Ya tiene la respuesta correcta, pero la está mirando de forma incorrecta.

0x es el prefijo hexadecimal
3C es 3 x 16 + 12

+0

Gracias, este es el camino a seguir. – DropTheCode

10

se puede utilizar el método de BitConverter.ToString para convertir una matriz de bytes a cadena hexadecimal:

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

o simplemente:

string hex = Convert.ToByte('<').ToString("x2"); 
+0

Gracias pero necesito un byte, si después de la conversión i uso byte [] b = ASCIIEncoding.ASCII.GetBytes (hex); Obtengo una matriz de bytes con 51 y 67 valores. Necesito 3c. – DropTheCode

+0

Si necesita un byte, no llame '.ToString', simplemente:' byte b = Convert.ToByte ('<'); '. Además, el método 'GetBytes' no hace lo que crees que hace. No espera una cadena hexagonal. Espera una cadena simple en la que cada carácter se convierta en un byte utilizando la codificación especificada; no tiene nada que ver con el hexadecimal. Debería hacer lo siguiente si quiere obtener la matriz de bytes original de una cadena hexadecimal: http: // stackoverflow.com/a/311179/29407 –

3

Usted desea convertir el valor numérico a hexadecimal usando ToString("x"):

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

Sin embargo, tenga en cuenta que su código para convertir el carácter "<" en un byte funcionará para ese personaje en particular, pero no funcionará para caracteres que no sean ANSI (que no cabrán en un byte).

4
char ch2 = 'Z'; 
Console.Write("{0:X} ", Convert.ToUInt32(ch2)); 
5

obtener 60 (representación decimal) en lugar de 3c.

No, no obtiene ninguna representación. Obtiene un byte que contiene el valor 60/3c en alguna representación interna. Cuando lo mira, es decir, cuando lo convierte en una cadena (explícitamente con ToString() o implícitamente), obtiene la representación decimal .

Por lo tanto, usted tiene que asegurarse de que explícitamente convertir el byte de cadena, especificando la base que desea. ToString("x"), por ejemplo convertirá un número en un representación hexadecimal:

byte b = Convert.ToByte('<'); 
String hex = b.ToString("x"); 
Cuestiones relacionadas