1

私はPythonが初めてで、PyUSB経由でUSBデバイスからいくつかの値を読み込もうとしています. さて、今は動作しますが、問題が発生しました: デバイスからデータを読み取っている間、PyUSB はデータを読み取るためのエンドポイントを必要とします。このエンドポイントは、16 進値で識別されます。データを次のように読み取ると...

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

... 「AttributeError: 'NoneType' オブジェクトに属性 'bmAttributes' がありません」というエラーが表示されます。データを次のように読み取ると...

dev.read(0x81, ...)

... できます。

だから私の簡単な質問は: 0x81 と '\x81' の違いは何ですか?

:-)

4

4 に答える 4

11

Python 2.x では、'\x81'値が 129 の 1 バイトで構成されるバイト文字列です。 を呼び出して取得することもできますchr(129)

0x81は 16 進法で書かれた整数で、値は 129 です。単純に と書くことでも取得できます129

于 2012-02-17T22:46:34.900 に答える
2

0x81 は要求された 16 進数で送信され、'\x81' は文字列で送信されます。それが2番目が機能する理由です。それが役に立ち、実際にあなたが求めていたものであることを願っています:)

于 2012-02-17T22:50:59.650 に答える
2

最初のものは、特定の 16 進数値が最初の文字位置に強制された文字列で、2 番目のものは整数です。

どうやらそのAPI呼び出しは間違いなく整数を期待しています。

于 2012-02-17T22:46:13.130 に答える
2

\x81 は 16 進コード 81 の Unicode 文字に対応し、0x81 は有効な 16 進値です。

于 2012-02-17T22:45:30.273 に答える