整数をバイトに変換する

Agnishom Chattopadhyay

番号は、各バイトが番号の各バイトをこの順序で表す文字列に直接変更する必要があります。

たとえば、303856920984473976136907479138614277609は「\ xe4 \ x98 \ xb6 \ xdb \ xed〜 \ x1c \ xd2X \ xa5 \ xd1 \ xa9 \ xdaNu \ xe9」になります。

>>>hex(303856920984473976136907479138614277609)
'0xe498b6dbed7e1cd258a5d1a9da4e75e9L'
>>>>>> 'e498b6dbed7e1cd258a5d1a9da4e75e9'.decode('hex')
'\xe4\x98\xb6\xdb\xed~\x1c\xd2X\xa5\xd1\xa9\xdaNu\xe9'

これを直接行うPython関数はありますか?

Veedrac

あなたが行う「デコード」は非常に脆弱なので、もう少し厳密なものがあります。

import struct
from functools import partial
from itertools import imap

def to_bytes(number):
    # This can only pack an unsigned long long
    # so we need to split the number into those
    packer = partial(struct.pack, ">Q")

    # How many unsigned long longs needed to hold the number
    iterations = (number.bit_length() // 64) + 1

    # Get the parts
    sections = ((number >> i*64) & 0xFFFFFFFFFFFFFFFF for i in reversed(xrange(iterations)))

    # And map "packer" over them
    return b"".join(imap(packer, sections)).lstrip("\x00")

それは実際には「組み込み」ではありませんが、多くの数で壊れることはありません。

>>> to_bytes(0x12300FFABACAADABAF0)
'\x01#\x00\xff\xab\xac\xaa\xda\xba\xf0'

>>> hex(0x12300FFABACAADABAF0)[2:].decode('hex')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/encodings/hex_codec.py", line 42, in hex_decode
    output = binascii.a2b_hex(input)
TypeError: Non-hexadecimal digit found

またhex、数字以外の文字の末尾と前にストライピングを行い、必要に応じてゼロを埋めてからトランスコードするよりも、間違いなくクリーンです

Python 3では、はるかに簡単です。

>>> number.to_bytes(number.bit_length()//8+1, "big")
b'\x01#\x00\xff\xab\xac\xaa\xda\xba\xf0'

%~> python2
Python 2.7.5 (default, May 12 2013, 12:00:47) 
[GCC 4.8.0 20130502 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> (324).bit_length()
9

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Prologでバイトのリストを整数に変換する

Android:バイト配列を整数配列に変換する

JavaとPythonでバイトを整数に変換する

バイト配列を整数配列に変換する方法

Goで整数をバイトに変換する方法

整数を8バイト長に変換する

Pythonで整数をバイトに変換する

整数を4ビットのバイナリに変換する

バイト文字列を整数値に変換する方法は?

Pythonで整数を2バイトに変換する

複数の整数をバイト配列に変換する方法

整数配列をバイト配列に変換する

バイト配列を整数値に変換する方法

整数のベクトルをバイトに変換する方法とバイトから変換する方法は?

Pythonで整数を64ビットバイト表現に変換する方法

バイトのリストをFlutterの整数値に変換する

ループせずにバイト配列を整数に変換する方法は?

Python 2,3整数を「バイト」にきれいに変換する

Python 2,3整数を「バイト」にきれいに変換する

ByteBufferを使用してnバイトの配列を整数に変換する

&と|を使用してJavaでバイトを整数に変換する

Rustで整数をバイトリテラルに変換する方法は?

バイト型の値を整数型の値に変換する方法

Javaで整数値を「n」桁のASCIIバイト配列に変換する方法

Ruby:バイト配列を整数に変換しますか?

整数をバイト配列に変換します

PHPはバイト文字列を整数に変換します

バイトの配列を整数に変換します

2バイトを小整数に変換します

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ