Domanda

Sono nuovo in Python e sto cercando di leggere alcuni valori da un dispositivo USB tramite PyUSB.Bene, ora funziona ma ho avuto qualche problema: durante la lettura dei dati dal dispositivo, PyUSB ha bisogno di un endpoint da cui leggere i dati.Questo endpoint viene identificato tramite un valore esadecimale.Se leggo i dati come ...

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

... Ottengo un errore "AttributeError: l'oggetto 'NoneType' non ha attributo 'bmAttributes'".Se leggo i dati come ...

dev.read(0x81, ...)

... funziona.

Quindi la mia semplice domanda è: qual è la differenza tra 0x81 e "\ x81"?

:-)

È stato utile?

Soluzione

In Python 2.x, '\x81' è un bytestring costituito da un singolo byte con valore 129. Puoi ottenerlo anche chiamando chr(129).

0x81 è un numero intero scritto in base 16, con il valore 129. Puoi ottenerlo anche semplicemente scrivendo 129.

Altri suggerimenti

\ x81 corrispondono a un carattere Unicode quello con 81 codice esadecimale, 0x81 è un valore esadecimale valido.

La prima è una stringa con un particolare valore esadecimale forzato nella posizione del primo carattere, la seconda è un numero intero.

A quanto pare quella chiamata API richiede sicuramente un numero intero.

0x81 invia un numero esadecimale richiesto, mentre "\ x81" invia una stringa di caratteri.Ecco perché il secondo funziona, spero che aiuti ed è effettivamente quello che stavi chiedendo :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top