Principales respuestas
Pasar un string a un array de bytes en Visual c#

Pregunta
-
Buenas tardes,
Estoy intentando pasar un string con el siguiente formato:
string datos = "00:DD:EE:00:DA:00:00:00";
a un array de bytes de la siguiente manera. ¿Alguien me podría ayudar?
byte[] miArray = new byte[]{0x00,0xDD,0xEE,0x00,0xDA,0x00,0x00,0x00};
Lenguaje C#.
He conseguido dividir el string mediante split y obtener un array de strings:
string[] miCadena;
miCadena = datos .Split(':');Pero ahora no consigo pasar el array de strings al array de bytes.
Gracias de antemano.
Respuestas
-
Debes indicar al parser que el texto contiene un valor hexadecimal... así
string datos = "00:DD:EE:00:DA:00:00:00"; string[] miCadena; miCadena = datos.Split(':'); byte[] miArray = new byte[miCadena.Length]; for (int k = 0; k < miArray.Length; k++) { miArray[k] = byte.Parse(miCadena[k], System.Globalization.NumberStyles.AllowHexSpecifier); }
- Marcado como respuesta Arlonso jueves, 13 de diciembre de 2012 7:05
Todas las respuestas
-
-
Debes indicar al parser que el texto contiene un valor hexadecimal... así
string datos = "00:DD:EE:00:DA:00:00:00"; string[] miCadena; miCadena = datos.Split(':'); byte[] miArray = new byte[miCadena.Length]; for (int k = 0; k < miArray.Length; k++) { miArray[k] = byte.Parse(miCadena[k], System.Globalization.NumberStyles.AllowHexSpecifier); }
- Marcado como respuesta Arlonso jueves, 13 de diciembre de 2012 7:05
-
Gracias a todos por la ayuda.
El objetivo es transformar la cadena introducida en una base de datos como texto, que es la dirección de un dispositivo de RadioFrecuencia, a bytes para el ensamblado del mensaje a enviar.
Al final también encontré la siguiente forma, que no me iba por no añadir el indicador hex 16.
string miCadena = "00:00:22:FF:DA:00:00:33";
string[] miCadena2= (miCadena.Split(':'));
byte[] miDireccion= new byte[miCadena2.Length];
for(int i=0;i<miCadena2.Length;i++)
miDireccion[i]=Convert.ToByte(miCadena2[i],16);
//Output: 0 0 34 255 218 0 0 51
De todas formas, ¿Se podría dar formato Hexadecimal al valor guardado o da igual?
Ej: FF en vez de 255.
- Editado Arlonso jueves, 13 de diciembre de 2012 7:24