La codificación que utiliza el \x (barra diagonal inversa x) prefijo?

Estoy tratando de decodificar el texto, que es el prefijo de ciertos caracteres especiales’ con \x. He trabajado a cabo las siguientes asignaciones de la mano:

\x28   (
\x29   )
\x3a   :

e.g. 12\x3a39\x3a03 AM

¿Alguien reconoce lo que esta codificación es?

  • Tenga en cuenta que es probable que \x3a39 es una sola unidad – sería en C, en cualquier caso. Si la cadena fue una gran cadena de caracteres, que podría caber en un solo personaje; en un 8-bit de la cadena de caracteres, se desbordaría, y el valor introducido es probablemente indefinido (definido por la implementación en el mejor).
InformationsquelleAutor Alex Angas | 2009-05-20

3 Kommentare

  1. 33

    Es ASCII. Todas las apariciones de los cuatro personajes \xST se convierten a 1 carácter cuyo código ASCII es ST (en hexadecimal), donde S y T alguna de 0123456789abcdefABCDEF.

    • Usted fácilmente puede decodificar este tipo de texto por sólo poner en citas en interactiva del intérprete de Python.
    • se puede proporcionar un indicio de cómo exactamente?
    • en una consola, ejecute ‘python’ (o ‘ipython’), y luego en el símbolo del sistema, escriba [ ’12\x3a39\x3a03 AM’ ] (es decir, todo lo que está entre corchetes, incluyendo las comillas, pero sin incluir el soporte).
  2. 17

    La '\xAB' se utiliza la notación en C, C++, Perl y otros lenguajes de tomar una indicación de C, como una forma de expresar el carácter hexadecimal códigos en el medio de una cadena.

    La notación '\007' uso de los medios octal para el código de carácter, cuando hay dígitos después de la barra diagonal inversa.

    En C99 y más tarde, también puede utilizar \uabcd y \U00abcdef para codificar los caracteres Unicode en hexadecimal (con 4 y 8 dígitos hexadecimales necesarias; los dos primeros dígitos hexadecimales en \U debe ser 0 para ser válido, y, a menudo, el tercer dígito será 0 demasiado 1 es la única válida).

    Tenga en cuenta que en C, octal escapa están limitados a un máximo de 3 dígitos hexadecimales se escapa no están limitados a 2 o 3 dígitos; el escape hexadecimal termina en el primer carácter que no sea un dígito hexadecimal. En la pregunta, la secuencia es "12\x3a39\x3a03". Que es una cadena que contiene 4 personajes: 1, 2, \x3a39 y \x3a03. El valor real que se utiliza para el de 4 dígitos hexadecimales de los caracteres es de aplicación definido. Para lograr el resultado deseado (utilizando \x3A para representar un colon :), el código tendría que utilizar la concatenación de cadenas:

    "12\x3a" "39\x3a" "03"
    

    Esto ahora contiene 8 caracteres: 1, 2, :, 3, 9, :, 0, 3.

  3. 0

    Supongo que de lo que se trata es de una cadena unicode que ha sido codificados de manera diferente a la secuencia de salida fue enviado. es decir. utf-16 salida de cadena a un latin-1 dispositivo. En esa situación, ciertos caracteres se obtienen como valores de escape para evitar el envío de caracteres de control o caracteres incorrectos para el dispositivo de salida. Esto sucede en python por lo menos.

    • Así que mi pregunta @lostlogic, ¿cómo hace uno para obtener la codificación original que se supone que han sido enviados. Yo tengo un problema similar

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea