Pergunta

Sou novo em Python e estou tentando ler alguns valores de um dispositivo USB via PyUSB.Bem, agora funciona, mas tive alguns problemas: ao ler os dados do dispositivo, o PyUSB precisa de um endpoint para ler os dados.Este ponto final é identificado por meio de um valor hexadecimal.Se eu ler os dados como ...

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

... Recebo um erro "AttributeError: 'NoneType' objeto não tem atributo 'bmAttributes'".Se eu ler os dados como ...

dev.read(0x81, ...)

... funciona.

Então, minha pergunta simples é: Qual é a diferença entre 0x81 e '\ x81'?

:-)

Foi útil?

Solução

No Python 2.x, '\x81' é uma cadeia de bytes que consiste em um único byte com valor 129. Você também pode obtê-lo chamando chr(129).

0x81 é um número inteiro escrito na base 16, com o valor 129. Você também pode obtê-lo simplesmente escrevendo 129.

Outras dicas

\ x81 corresponde a caracteres Unicode, aquele com código hexadecimal 81, 0x81 é um valor hexadecimal válido.

O primeiro é uma string com um valor hexadecimal específico forçado na posição do primeiro caractere, o segundo é um número inteiro.

Aparentemente, essa chamada de API definitivamente espera um número inteiro.

0x81 está enviando um número hexadecimal que ele pede, enquanto '\ x81' está enviando uma sequência de caracteres.É por isso que o segundo funciona, espero que ajude e é realmente o que você estava perguntando :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top