2016-12-22 8 views
2

Python 3で1バイトの変数を宣言するにはどうすればよいですか?私はCで表され、以下の結果を達成したいと思います:Python 3で1バイト変数を宣言する

unsigned char = 0xFF; 

Pythonで8ビット変数を宣言することが可能であるかどうかを知りたいです。あなたの答え

+0

私はあなたがPythonのドキュメントを読んだので、答えを知っていると思います。組み込み型やユーザ定義型では不可能なPythonの「8ビット変数」を使って実現したいことは何ですか? – mustaccio

+0

@mustaccio私はそれを(部分的に)読んだ。ソケットを通してバイトを送信したいだけです。 – Papipone

+0

ソケットを介してバイトを送信しようとすると、どのような問題が発生しましたか? – pvg

答えて

4

Pythonは文字と文字列の間でCが行う方法を区別しません。また、約intビット幅を気にしないため

感謝。シングルバイトのために、あなたは基本的に3つの選択肢があります。

  1. 長さ1 bytes(またはbytearray)オブジェクトmychar = b'\xff'(またはmychar = bytearray(b'\xff')
  2. あなたはrange(256)外の値を割り当てる(またはにマスキングを使用していないintトリムオーバーフロー):mychar = 0xff
  3. ​​タイプmychar = ctypes.c_ubyte(0xff)

最後のオプションは、主に​​を通じてCの関数に対応するため、それはPython的ではない/それ以外の場合は遅いですです。オプション1と2の選択は、使用しているものによって異なります。異なるユースケースでは異なるアプローチが必要です(ただし、両方のフォームを使用する必要がある場合は、bytesオブジェクトのインデックス作成/反復でintという値が得られます)。