¿Cómo usar caracteres en cadenas fuera del rango ASCII imprimible?

1

Estoy intentando crear una cadena con caracteres fuera del rango de impresión ASCII. Estoy usando un microcontrolador STM32 usando el µVision IDE con el compilador Keil. La documentación permite varias secuencias de escape, incluida una para el "código ASCII en hexadecimal". Cuando solo quiero un carácter, no hay problema, pero si quiero poner otros números en la misma cadena después del carácter, empiezo a tener problemas.

Esto funciona.

char myString[10] = "\x06";//(It gives me 0x06,0x00,...,0x00)

Esto no lo hace. (Me da 0x60

char myString[10] = "\x060";//(It gives me 0x60,0x00,...,0x00)

Cuantos más caracteres (0-F) en la misma continuidad se sigan agregando como dígitos hexadecimales del mismo número (incluso emitirá una advertencia de que está fuera de rango si el número es demasiado grande). ¿Hay alguna forma de evitar esto? ¿Podría ser esto un problema de compilador?

    
pregunta AndrewOnFire

2 respuestas

1

Si está preguntando cómo terminar una secuencia de escape hexadecimal cuando es seguido por un carácter que es un dígito hexadecimal, aquí hay una manera

"\x06""0"

Use dos comillas dobles.

De lo contrario, una secuencia de escape hexadecimal usará todos los dígitos hexadecimales consecutivos que siguen.

    
respondido por el rioraxe
1

Cuando inicializa una cadena como esa, está especificando un carácter a la vez. Un carácter solo puede contener un valor entre 0 y 255. Si desea rellenar más bytes de su cadena, solo especifique más caracteres en el inicializador:

char myString[4] = "\x06\x60\x44";

Tenga en cuenta que no se garantiza que los caracteres no especificados se rellenen con 0, aunque se colocará un 0 al final de lo que especifique como inicializador:

char string2[8] = "test";

Se inicializarán cinco caracteres, los caracteres del 6 al 7 podrían contener basura.

    
respondido por el The Photon

Lea otras preguntas en las etiquetas