\x81'和0x81的区别

1 投票
4 回答
16852 浏览
提问于 2025-04-17 13:11

我刚开始学习Python,想通过PyUSB从USB设备读取一些值。现在这个功能可以用了,但我遇到了一些麻烦:在从设备读取数据时,PyUSB需要一个端点来读取数据。这个端点是通过一个十六进制的值来识别的。如果我这样读取数据...

dev.read('\x81', ...)

... 就会出现一个错误:“AttributeError: 'NoneType' object has no attribute 'bmAttributes'”。而如果我这样读取数据...

dev.read(0x81, ...)

... 就可以正常工作。

所以我简单的问题是:0x81和'\x81'有什么区别呢?

:-)

4 个回答

2

第一个是一个字符串,里面的第一个字符被强制设置成一个特定的十六进制值,第二个是一个整数。

显然,这个API调用确实是期待一个整数。

2

\x81对应的是一个Unicode字符,它的十六进制代码是81,0x81是一个有效的十六进制值。

12

在Python 2.x中,'\x81'是一个字节串,它由一个值为129的单个字节组成。你也可以通过调用chr(129)来得到它。

0x81是一个用十六进制表示的整数,它的值是129。你也可以直接写129来表示这个数字。

撰写回答