2016-06-15 9 views
0

大きな符号なし整数をバイト配列に変換して、シリアルポート経由で送信できるようにしています。任意のサイズのunsigned long intをバイト文字列に変換する

python 3.2には、長整数をバイト配列に変換する関数to_bytesが組み込まれています。しかしこれはpython 2.7では利用できません。同様に、Python 2.7にはstruct libがありますが、そのライブラリは任意の大きさのintを処理しません。スタックのオーバーフローには同様のquestionがありますが、受け入れられる答えはpickleを使用しています。圧縮を失うことなくlong intを送信しようとしているので、それは私を助けません。私はもちろんintを繰り返し実行して何か習慣を思いつくことができますが、私のために重い持ち上げを処理するために利用できるものがあることを期待していました。

答えて

1

フォーマット指定子を使用して16進数文字列に変換し、長さが奇数の場合は先頭に0を追加し、それを'hex'としてデコードしてバイトに変換します。最も速い方法ではなく、簡単です。

>>> '{:x}'.format(20L).decode('hex') 
'\x14'