Pregunta

Soy nuevo en Python y estoy tratando de leer algunos valores de un dispositivo USB a través de PyUSB.Bueno, ahora funciona, pero me encontré con algunos problemas: mientras lee datos del dispositivo, PyUSB necesita un punto final para leer los datos.Este punto final se identifica mediante un valor hexadecimal.Si leo los datos como ...

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

... obtengo un error "AttributeError: el objeto 'NoneType' no tiene atributo 'bmAttributes'".Si leo los datos como ...

dev.read(0x81, ...)

... funciona.

Entonces, mi pregunta simple es: ¿Cuál es la diferencia entre 0x81 y '\ x81'?

:-)

¿Fue útil?

Solución

En Python 2.x, '\x81' es una cadena de bytes que consta de un solo byte con valor 129. También puede obtenerlo llamando a chr(129).

0x81 es un número entero escrito en base 16, con el valor 129. También puede obtenerlo simplemente escribiendo 129.

Otros consejos

\ x81 corresponde a un carácter Unicode el que tiene el código hexadecimal 81, 0x81 es un valor hexadecimal válido.

El primero es una cadena con un valor hexadecimal particular forzado en la posición del primer carácter, el segundo es un número entero.

Aparentemente, esa llamada a la API definitivamente espera un número entero.

0x81 envía un número hexadecimal que solicita, mientras que '\ x81' envía una cadena de caracteres.Es por eso que el segundo funciona, espero que ayude y en realidad es lo que estabas preguntando :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top