質問

私は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つ目が機能する理由です。それが役立つことを願っており、実際にあなたが求めていたものです:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top