Разница между '\x81' и 0x81

Я новичок в Python и пытаюсь прочитать некоторые значения с USB-устройства через PyUSB. Что ж, теперь это работает, но у меня возникли некоторые проблемы: при чтении данных с устройства PyUSB нужна конечная точка для чтения данных. Эта конечная точка определяется через шестнадцатеричное значение. Если я читаю данные как...

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

... Я получаю сообщение об ошибке "AttributeError: объект 'NoneType' не имеет атрибута 'bmAttributes'". Если я читаю данные как...

dev.read(0x81, ...)

... оно работает.

Поэтому мой простой вопрос: в чем разница между 0x81 и '\ x81'?

:-)

4 ответа

Решение

В Python 2.x '\x81' это строка байтов, состоящая из одного байта со значением 129. Вы также можете получить его, вызвав chr(129),

0x81 целое число, записанное в базе 16, со значением 129. Вы также можете получить его, просто написав 129,

Первый - это строка с определенным шестнадцатеричным значением, введенным в первую позицию символа, второй - целое число.

Очевидно, что вызов API определенно ожидает целое число.

\x81 соответствует символам Юникода с шестнадцатеричным кодом 81, 0x81 является допустимым шестнадцатеричным значением.

0x81 отправляет шестнадцатеричное число, которое он запрашивает, в то время как \x81 отправляет строку символов. Вот почему второй работает, надеюсь, что это помогает и на самом деле то, что вы просили:)

Другие вопросы по тегам