es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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);
}
>

Tags:  ,

Answer

  1. Avatar for 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ón strtol(). Aquí tienes un ejemplo de código para hacer eso:

    String str = "0x31,0x32,0x33,0x39";
    byte Myarray[18];
    
    void setup() {
      Serial.begin(9600);
    }
    
    void loop() {
      char *p = strtok(const_cast<char*>(str.c_str()), ",");
      int i = 0;
      while (p != NULL) {
        Myarray[i++] = strtol(p, 0, 16);  
        p = strtok(NULL, ",");
      }
    
      Serial.write(Myarray, i);
    
      delay(1000);
    }
    

    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*>

Comments are closed.