在Python中将十六进制转换为整数

10

我从ADC通过USB接口将8位值读入计算机中。计算机上运行一个Python脚本,不断显示这些8位值的十六进制形式。但是,当十六进制代码对应ASCII代码时,Python会显示ASCII字符而不是原始的十六进制代码。

为了仅显示由这8位组成的整数,我需要对传入数据进行哪些处理?我不想要它以十六进制或ASCII形式出现。问题在于,这些值是带有反斜杠而不是通常的零的:'\xff'而不是'0xff'。如果我输入以下内容:

int('0xff',16)

结果是255,但如果我尝试

int('\xff',16)

我遇到了一个错误:使用16进制时,int()函数无法将其转换为整数。

有人知道如何轻松处理16进制代码中的\x吗?(不使用字符串的暴力操作)


1
int(r'\xff'[2:], 16) 可以工作。 - Steven Rumbalski
他从其他地方获取了 '\xff',他没有将其变成字面字符串的选项,我认为。 - Joran Beasley
1个回答

34
ord('\xff')

应该会给你想要的结果。

\x## 表示一个字节或字符,而 "FF" 是由两个字符组成的字符串,可以使用 int(my_string,16) 进行处理,但是当你只有一个字符时,你可能需要用到 ord

你可以通过像 len('\xFF') 这样的询问来查看这一点,你会发现它只是一个单独的字符。


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