Como converter uma int para uma corda hexagonal?

Quero levar um número inteiro (que será <= 255), para uma representação hexadecimal

por exemplo..: Eu quero passar em '65' e sair em ''\x41', ou '255' e obter ''\xff'.

I'tentei fazer isso com o struct.pack('c',65), mas isso engasga em qualquer coisa acima de 9, uma vez que ele quer aceitar uma única string de caracteres.

Solução

Você está à procura da função chr.

Você parece estar misturando representações decimais de inteiros e representações hexadecimais de inteiros, então isso'não é totalmente claro o que você precisa. Com base na descrição que você deu, acho que um desses trechos mostra o que você quer.

>>> chr(0x65) == '\x65'
True

>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True

Note que isto é bastante diferente de um fio contendo um inteiro como hexágono. Se é isso que você quer, utilize o hex builtin.

Comentários (5)

E sobre hex()?

hex(255)  # 0xff

Se você realmente quer ter "na frente" você pode fazer:

print '\\' + hex(255)[1:]
Comentários (1)

Tente:

"0x%x" % 255 # => 0xff

ou

"0x%X" % 255 # => 0xFF

A documentação Python diz: "mantenha isto debaixo da sua almofada: http://docs.python.org/library/index.html"

Comentários (0)