4 votos

Arduino: String to char Array

Tengo un String como: XXXXXXXXX

Su longitud es fijo y 9.

Necesito obtener un array char como:

char array[9] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

... a partir de ahí mi sketch procesa este array.

Quizá alguien tenga una idea de cómo conseguirlo. Pensé en un for-statement para almacenar cada letra en un array de cadenas. Luego otro for-statement para construir un array char con la presentación hexadecimal de cada cadena. Parece un poco complicado sin embargo creo.

Le agradezco mucho su ayuda.

EDITAR:

Lo que tengo que hacer:

  1. Separe la cadena en letras / cifras.
  2. Cambia cada letra por su representación HEX.
  3. Construye un Array char a partir de los valores HEX.

Ejemplo:

  1. 123 (cadena)
  2. 0x310x320x33 (Cadena o lo que sea ...)
  3. {0x31,0x32,0x33} (Char-Array)

¡Esto es lo que necesito!

7voto

mpflaga Puntos 1047

Parece lo siguiente string.toCharArray(buf, len) es lo que quieres. como examinado

String stringOne = "123456789";
char charBuf[50];
stringOne.toCharArray(charBuf, 50) ;
Serial.println(stringOne);
for (int i = 0; i < 9; i++) {
  Serial.print(" 0x");
  Serial.print(charBuf[i], HEX);
}
Serial.println();

rendimientos:

123456789
0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39

ya que cada contenido de charBuf es un uint8_t, independientemente de cómo se imprima.

A menos que estés pidiendo que cada elemento del array sea otra cadena de la representación ASCII del HEX. o estás pidiendo tener un array char de "0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39".

0 votos

Ya lo he usado. El punto es, que el Array entonces se parece a {0x00,0x00, ... , X,X,X,X,X,X} por lo que la cadena no se convierte a HEX. P.D. Tengo un array estático char (HEX) delante de mi I need to convert the string to HEX- Matriz

0 votos

He editado mi pregunta.

1 votos

@Darwin string.toCharArray hará exactamente lo que muestra tu ejemplo.

2voto

Karthik Puntos 66

Si su variable de cadena es de tipo Arduino String, puede utilizar una variable toCharArray() para obtener una matriz de caracteres.

char array[9];
yourString.toCharArray(array, 9);

0 votos

Tal vez mi pregunta no era precisa ... Tengo una cadena. La cadena debe ser separada en una matriz. Cada hijo de la matriz debe ser convertido a HEX.

0 votos

Hexadecimal es sólo una representación de un número. Si quieres que salgan en hexadecimal, usa el argumento HEX en la llamada a Serial.print. Así Serial.print(array[i], HEX)

0voto

Jason Thompson Puntos 168

Si tiene hilo

String item= "Hola";

AUX3= item.charAt(0);

AUX3 es 0x48 en Hex, 72 en Dec

 if (AUX3==72) {
    Answer1();   
 }

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X