質問
私はPythonが初めてで、PyUSBを介してUSBデバイスからいくつかの値を読み取ろうとしています。まあ、それは今動作しますが、私はいくつかの問題に遭遇しました:デバイスからデータを読み取るとき、PyUSBはデータを読み取るためのエンドポイントを必要とします。このエンドポイントは、16進値で識別されます。私はのようなデータを読んだ場合。..
dev.read('\x81', ...)
...私はエラー"AttributeError"を取得します:'NoneType'オブジェクトには属性'bmAttributes'"がありません。私はのようなデータを読んだ場合。..
dev.read(0x81, ...)
...それは動作します。
だから私の簡単な質問は:0x81と'\x81'の違いは何ですか?
:-)
解決
Python2では。x, '\x81'
値が129の1バイトで構成されるbytestringです。また、呼び出すことによってそれを得ることができます chr(129)
.
0x81
は、基数16で書かれた整数で、値は129です。また、単に書くことでそれを得ることができます 129
.
他のヒント
\ x81は、81の16進コードを持つUnicode文字に対応します。0x81は有効な16進値です。
最初の文字列は特定の16進値が最初の文字位置に強制された文字列で、2番目の文字列は整数です。
どうやらそのAPI呼び出しは間違いなく整数を期待しています。
0x81は、要求された16進数を送信し、 '\ x81'は文字列を送信します。それが2つ目が機能する理由です。それが役立つことを願っており、実際にあなたが求めていたものです:)
所属していません StackOverflow