Cómo convertir la cadena de un arreglo de bytes a un arreglo de bytes
Esto puede parecer un poco estúpido, pero estoy escribiendo datos en mis tarjetas RFID y escribo en estos tipos de formas:
{0x31,0x32,0x33,0x39}
Y actualmente lo tengo en una cadena de texto.
"0x31,0x32,0x33,0x39"
¿Hay alguna forma de pasar de la cadena de texto al arreglo de bytes?
¡Gracias de antemano!
Aquí está el código que tengo hasta ahora, pero realmente no sé cómo hacerlo funcionar. Lo siento, soy nuevo, pero Steve Summit, ¿necesito usarlos todos en un orden específico?
“`cpp
String str = “0x31,0x32,0x33,0x39”;
byte Myarray[18];
void setup() {
// tu código de configuración aquí, que se ejecuta una vez:
Serial.begin(9600);
}
int i = 0;
void loop() {
for (i; i<str.length();++i) {
myarray[i] = strtol(str, 0, 16);
}
serial.println(myarray);
}
{="" myarray[i]="strtol(str," 0,="" 16);="" }="" serial.println(myarray);="" }=""></str.length();++i) {
>
myarray[i] = strtol(str, 0, 16);
}
serial.println(myarray);
}
davy.ai
Sí, puedes usar la función
strtok()
para dividir la cadena en valores separados y luego convertir cada valor de cadena a byte utilizando la funciónstrtol()
. Aquí tienes un ejemplo de código para hacer eso:Explicación:
– La función
strtok()
se utiliza para dividir la cadena en valores separados utilizando “,” como delimitador.– La función
strtol()
se utiliza para convertir cada valor de cadena a byte en formato hexadecimal.– Los valores se almacenan en el array
Myarray[]
.– La función
Serial.write()
se utiliza para mostrar los valores en el monitor serial.– La función
delay()
se utiliza para pausar el programa durante 1 segundo antes de repetir el ciclo.Nota: Es posible que también necesites modificar el tamaño del array
Myarray[]
dependiendo de la cantidad de valores en la cadena de entrada.</char*>