32バイト(他の長さが必要かもしれませんが)整数をPythonのバイトオブジェクトに変換したいと思います。これを行うきれいで簡単な方法はありますか?私はあなたを推測しているnバイトのintをpython3のバイトに変換する
答えて
は、ブートに32ビット整数、およびビッグエンディアンが必要になります。
>>> from ctypes import c_uint32
>>> l = c_uint32(0x12345678)
>>> bytes(l)
b'xV4\x12'
同様c_uint8、c_uint16とc_uint64があります。より長い整数の場合は、divmod(x、256)を使用して手動で行う必要があります。
>>> def bytify(v):
... v, r = divmod(v, 256)
... yield r
... if v == 0:
... raise StopIteration
... for r in bytify(v):
... yield r
...
>>> [x for x in bytify(0x12345678)]
[120, 86, 52, 18]
>>> bytes(bytify(0x12345678))
b'xV4\x12
>>> bytes(bytify(0x1234567890987654321))
b'!Ce\x87\t\x89gE#\x01!Ce\x87\t\x89gE#\x01'
ctypesを使用する必要はありません。 'bytes'は、範囲(0,256)の' int'の配列で初期化できます。 – Tom
@トム:あなたは明らかに答え全体を読まなかった。 –
@Lennart様、あなたはctypesをインポートすることであなたの答えを始めました。さまざまなサイズのctypeを表示するようになりました。そして、それを使用しないソリューション(私が個人的には最初のソリューションであったはずだと思います)を提供しました。私はちょうどその事実を明示的に言及することが重要であると考えました、それだけです。あなたは意見に同意する権利があります。あなたがそれに合っていると思わない場合、答えを言い換える必要はありませんが、告発する必要はありません。私は何人かの人々がctypesが必要であり、それによって落胆する間違った印象を得るかもしれないと思うので私が言ったことを言った。 – Tom
to_bytesは(長さ、BYTEORDER [署名])あなたが3.2から始まる必要があるすべてです。この場合、someidentifier .to_bytes(4、 'big')は、必要なバイト文字列を与える必要があります。
>>> hash.to_bytes(32) ...トレースバック(最新の呼び出しの最後):
次回は別の識別子を使用します。 'ハッシュ'は、組み込み変数ではなく、実際の変数名またはリテラルを意味していました。私はそのような組み込みがあったことを忘れていました。 byteorderも今必要です。 – SilverbackNet
ああ、私は混乱していた - 今それはすべての明確な、ありがとう! – Tom
bytes("iterable")
を直接ご利用いただけます。 iterable
の各値はbyte
の中でbytes()
になります。リトルエンディアンエンコーディングの例:
>>> var=0x12345678
>>> var_tuple=((var)&0xff, (var>>8)&0xff, (var>>16)&0xff, (var>>24)&0xff)
>>> bytes(var_tuple)
b'xV4\x12'
はあなたが我々がそれからバイナリを取得したい
var = 'і' # var is ukrainian і
があるとします。 フローです。文字列=>値は、/ => int型=>バイナリ
binary_var = '{:b}'.format(int.from_bytes(var.encode('utf-8'), byteorder='big'))
今binary_varは '1101000110010110' でバイト。それは文字列です。
今、あなたはバイナリからUnicode値を取得したい、戻っ:
int_var = int(binary_var, 2) # here we get int value, int_var = 53654
今はバイトの整数に変換する必要があります。ウクライナの「іは」1バイトになっちゃうフィット感ではなく、2に我々はB「\ XD1 \ X96」
bytes_var = int_var.to_bytes(2, byteorder='big')
最後に、我々は我々のバイトをデコードする= bytes_var実際のバイトに変換します。
- 1. intをGPIOのバイトに変換する
- 2. バイトをintに変換する
- 3. python3でnumpyバイトをfloatに変換するには?
- 4. intを異なるバイト配列のサイズに変換します。
- 5. intをシリアル通信用のバイトに変換する
- 6. intを4バイトの16進数に変換する方法
- 7. どのようにを変換する:(int)5(バイト)0x05 Java?
- 8. 2バイトから4バイトをsigned/unsigned short/intに変換します
- 9. Androidの文字列をバイトに変換する[] - バイトをバイト[]で返す
- 10. ネイティブのuint8_t(Javaバイト)をintに変換します
- 11. Pythonバイトからバイトへの変換
- 12. 変換INT []バイトに:それは[]、バイトだったとしてどのようにint型[]を見て?
- 13. バイト配列をint配列に変換する方法は?
- 14. intをバイトとバックに変換する方法
- 15. IronPython - バイト配列にintを変換する
- 16. xamarin pclでバイト配列をIntに変換するc#
- 17. Golangでint配列をバイト配列に変換する
- 18. Cのフロートに2バイトまたは3バイトを変換する
- 19. C#バイト変換
- 20. 未知の入力バイト長をintに変換
- 21. ANdroid NDKでバイトをintに変換し直しますか?
- 22. 3バイトをint型に変換しますか?
- 23. PNG圧縮バイト配列をBMPバイト配列に変換する
- 24. 文字列表現バイトをバイトに変換する方法は?
- 25. Rubyで変換する方法バイト "puts n"
- 26. bigquery 16進文字列をバイト/ intに変換
- 27. intのバイトをMIPSに格納する
- 28. バイトからintへの変換の計算
- 29. 変換バイト配列
- 30. JavaバイトからVB.NETバイト(WebService)に変換する例外
あなたの整数は現在どのような形式ですか? –
32バイト整数?それは多くのニュー...バイトです。あなたは何を正確に達成しようとしていますか、何を試しましたか? –
私は0x形式でshaハッシュを持っていますが、pythonは完全に整数に変換するのは幸せですが、そこからバイトを得るにはどうしたらいいですか? – Peter