2011-11-22 19 views
11

Tengo secuencias de caracteres estoy alimentando a una función de decodificación:¿Cómo escapar o terminar una secuencia de escape en C

Por ejemplo:

"\x05three" 

(Sí, eso es una cadena tipo Pascal . La función se traduce cadenas de longitud prefijada de cadenas terminadas en cero)

escribí un par de casos de prueba, entre las cuales:.

"\x04four" 

Y para mi sorpresa, salió como "Oour". Mirando más de cerca, resulta que la especificación en escape sequences para Visual Studio permite que mi secuencia se interprete básicamente como \x04f, que sería 79 en base 10 (por lo tanto, la cadena resultante se convierte en "Oour", 79 es "O")

Mi solución era simplemente para dividir la cadena:

"\x04" "four" 

la pregunta: ¿hay alguna otra manera de escapar o terminar una secuencia de escape?

+1

'0x04f' es 4 * 16 + 15 = 79, entonces 'O'. –

+1

0x4f (hex) es 79 en decimal, que es la letra "O". 80 en decimal (no 0x80 que es un número hexadecimal) es la letra P. 0x80 es 128 decimal, que no es un carácter ascii estándar –

+0

Gracias a los dos. Estoy avergonzado ahora. Me pregunto si agarré la lata de descafeinado esta mañana ... – MPelletier

Respuesta

5

Sí, no puedes probar "\004four" por ejemplo. De hecho, incluso "\04four" probablemente lo hará, porque f no es un número octal.

+1

probablemente significaba \ 004cuatro ... –

+0

Sí, gracias, incluso lo cambié ;-) –

+0

@AndersK. Probablemente. ¡Y un gran DUUHHH! ¡para mi! – MPelletier

Cuestiones relacionadas