2012-05-11 16 views
10

¿Cómo puedo convertir esta cadena en un byte?¿Cómo convierto una cadena en byte en C#?

string a = "0x2B"; 

He intentado este código, (byte) (a); pero dijo:

no pudo convertir una cadena de bytes tipo de ...

y cuando traté de este código, y esto Convert.ToByte(a);byte.Parse(a);, que dijo:

cadena de entrada no en un formato correcto ...

¿Cuál es el código adecuado para esto?

Pero cuando estoy declarando que, por ejemplo, en una matriz, es aceptable ...

Por ejemplo:

byte[] d = new byte[1] = {0x2a}; 

Respuesta

13

Tiene que especificar la base para usar en Convert.ToByte s esde su cadena de entrada contiene un número hexadecimal:

byte b = Convert.ToByte(a, 16); 
2

Actualización:

Como otros han mencionado, mi la sugerencia original de usar byte.Parse() con NumberStyles.HexNumber en realidad no funcionará con cadenas hexadecimales con el prefijo "0x". La mejor solución es usar Convert.ToByte(a, 16) como se sugiere en otras respuestas.

Respuesta original:

Trate de usar la siguiente:

byte b = byte.Parse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture); 
+0

no funcionará con el prefijo '0x'. – Douglas

+0

Esto causaría una excepción si la cadena fuera igual a 'Pie ', debería entrar en detalles sobre cómo evitar esto. Como 'Douglas' explica que esto tampoco funcionaría con' Ox' considerando que 'x' está considerando no ser válido en este contexto. –

4

Usted puede utilizar la función ToByte de la clase Convert ayudante:

byte b = Convert.ToByte(a, 16); 
5
byte b = Convert.ToByte(a, 16); 
1

Puede utilizar UTF8Encoding:

public static byte[] StrToByteArray(string str) 
{ 
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 
    return encoding.GetBytes(str); 
} 
+1

Ha entendido mal la pregunta. – jason

+0

parece tan .... – Frederic

+0

Puede quitar su respuesta entonces. –

Cuestiones relacionadas