Python , Impresión Hex quita la primera 0?

echar un vistazo a esto:

fc = '0x'
for i in b[0x15c:0x15f]:
    fc += hex(ord(i))[2:]

Digamos que este código se encuentra el hex 00 04 0f , en lugar de escribir de esa manera , se elimina el primer 0 , y escribe : 04f
alguna ayuda?

OriginalEl autor thethiny | 2013-04-08

4 respuestas

  1. 21

    Esto sucede, es porque hex() no incluyen ningún tipo de ceros a la izquierda, por ejemplo:

    >>> hex(15)[2:]
    'f'

    Para asegurarse de obtener siempre dos caracteres, puede utilizar str.zfill() para agregar un cero a la izquierda cuando sea necesario:

    >>> hex(15)[2:].zfill(2)
    '0f'

    Aquí es lo que se vería en el código:

    fc = '0x'
    for i in b[0x15c:0x15f]:
        fc += hex(ord(i))[2:].zfill(2)
    ` i en b[0x15c:0x15f]: h = hex(ord(i))[2:] si len(h) != 2: h = ‘0’+h fc += h;` Un amigo le dijo que esto funcionará
    En el pasado, explicado correctamente trabajado, por ejemplo en esta !
    Yo no diría que su explicado correctamente y yo no soy el mejor modo de explicar. Su ignorando los ceros a la izquierda porque no significan nada hacia el valor decimal de los valores hexadecimales. Se indican el número de bytes de los valores. 15 = f. 0f = 15 porque 0 + 15 es 15

    OriginalEl autor Andrew Clark

  2. 14
    >>> map("{:02x}".format, (10, 13, 15))
    ['0a', '0d', '0f']
    Este es muuuucho más python el que la mayoría de los upvoted respuesta! +1!

    OriginalEl autor Senyai

  3. 2
    print ["0x%02x"%ord(i) for i in b[0x15c:0x15f]]

    el uso de una cadena de formato "%2x" le dice que el formato es de 2 caracteres de ancho, del mismo modo "%02x" le dice que la almohadilla con 0

    tenga en cuenta que esto iba a quitar el 0 a la izquierda de las cosas, con más de 2 valores hexadecimales
    por ejemplo: "0x%02x"%0x0055 => "0x55"

    OriginalEl autor Joran Beasley

  4. 0

    No deja de ser sólo una representación gráfica para su conveniencia.

    El valor no es despojado de los datos, es solo visualmente acortado.

    Descripción completa aquí y por qué es o qué no es importante: ¿Por qué son los números hexadecimales con el prefijo 0x?

    no , es despojado de los datos , traté de impresión de la salida , y da valores diferentes , 04f es demasiado diferente de 00040f

    OriginalEl autor Torxed

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *