9

我正在通过 USB 从 ADC 读取 8 位值到我的计算机。一个 python 脚本在我的计算机上运行并连续显示 8 位值,这些值是十六进制形式的。但是,当十六进制代码对应于 ASCII 代码时,python 将显示 ASCII 字符而不是原始十六进制代码。

我需要对传入的数据做什么才能仅显示 8 位表示的整数?我不希望它是十六进制或 ASCII 格式。问题是这些值以斜线而不是熟悉的零出现:'\xff' 而不是 '0xff'。如果我走:

int('0xff',16)

结果是 255,但如果我尝试

int('\xff',16)

我收到一个错误:int() 以 16 为底的无效文字。

有谁知道在十六进制代码中处理 \x 的简单方法(无需对字符串进行暴力操作)?

4

1 回答 1

33
ord('\xff')

应该给你你想要的。

\x##表示单个字节或字符,如果你愿意的话,而"FF"是一个由两个字符组成的字符串,然后可以用 处理int(my_string,16),但是当你有一个字符时,你可能想要ord.

您可以通过询问类似的内容来看到这一点len('\xFF'),您会发现它只是一个字符。

于 2013-11-06T18:29:12.343 回答