您好,我正在学习 pySerial 模块,所以 ascii 的十六进制是它的基础。
到目前为止,我有以下概念。
字节串:"\xde"
字节数组:
>>> bytearray('\xde')
bytearray(b'\xde')
>>> a = bytearray('\xde')
>>> a[0]
222
>>> hex(a[0])
'0xde'
十六进制字符串:'\xde'
十六进制:0xde
正常表示:de
现在我需要的是十六进制字符串到十六进制,反之亦然。
还有 Hex 或 Hex String to Normal 表示。
我希望我能得到最简单的答案。
更新:
我想我得到了一个初步的答案,而不是字符串操作。 但这看起来真的很脏。
>>> hex(int(binascii.hexlify('\xde'),16))
'0xde'
最佳答案
让我重新写一点。
你有一个字节(比如 b
,整数值为 222(十进制)或 de(十六进制)或八进制 276 或二进制 10111110。
它的十六进制字符串表示是'0xde'
下面的初始化是一样的:
b = 222
b = 0xde
这里是转换(假设s
是一个字符串,s='0xde'
,即十六进制字符串表示)
s = hex(b)
b = int(s, 16)
根据评论编辑:
如果您真的希望能够接受\xde
以及0xde
作为输入,您可以这样做:
b = int('0' + s[1:] if (s[0] == '\\') else s, 16)
或直接
b = int('0' + s[1:], 16)
如果你确定你永远不会得到奇怪的输入
关于python - 如何在 python 中将十六进制转换为 ascii 十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25967012/