Python3打印十六进制表示的方法

4

我可以找到很多关于如何将值转换为十六进制的线程。但我并不想进行任何转换。相反,我想以十六进制表示形式打印我已经拥有的字节,例如:

byteval = '\x60'.encode('ASCII')
print(byteval)  # b'\x60'

相反,当我这样做时,我得到了以下结果:
byteval = '\x60'.encode('ASCII')
print(byteval)  # b'`' 

因为 ` 是我字节所对应的ASCII字符。

澄清一下:type(byteval) 是bytes,而不是字符串。


2
这个对你有用吗?https://dev59.com/-nE95IYBdhLWcg3wXsuR#2340358? - Ivan Velichko
如果你想让\x60出现,那么你需要将你的字符串进行转换。 - Andrea Corbellini
你可以尝试使用 print(hex(ord(byteval))) - James Kent
我的输入类型是Bytes(),而不是字符串,因此我不想进行转换。使用ASCII编码的'\x60'的含义是为了提供一个自包含的示例。 - Adriaan Rol
1
我不明白为什么它打印成"\x60"或"`"对你有什么影响?在这两种情况下,执行ord(byteval)都将返回96。 - Ramast
2个回答

5
>>> print("b'" + ''.join('\\x{:02x}'.format(x) for x in byteval) + "'")
b'\x60'

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接