レッスンの基礎のpython - 梱包と大きな整数の列から開梱(白鮑彪注シェア)

#4、パッキングと大きな整数列アンパック
パックされた文字列に大きな整数、大きい整数に文字列アンパック位
#4.1ソリューション:
#処理プログラムは、16バイトの要素を必要とし大きな整数保持ストリング128
データ= B '\ xOO \ x124V \ x00x \ X90 \ XAB \ xOO \ XCD \のXeF \ X01 \ xOO#\ X004'
解釈バイト整数に#を使用することができますその後、int.from_bytes()、およびエンディアン開発する:
印刷(int.from_bytes(データ、 'リトル・'))#69120565665751139577663547927094891008
印刷(int.from_bytes(データ、 'ビッグ'))94522842520747284487117727783387188#の
大きな整数に変換する#バイト文字列がint.to_bytes()メソッドを使用することができ、唯一のバイト数やバイト順序を指定する必要があります
= 94522842520747284487117727783387188 X
印刷(x.to_bytes(16 'ビッグ'))#のB「\ xOO \ x124V \ x00x \ X90 \ XAB \ xOO \ XCD \のXeF \ X01 \ xOO#\ X004 '
印刷(x.to_bytes(16、'リトル・「))#B'4 \ xOO#\ xOO \ X01 \のXeF \ XCD \ xOO \ XAB \ x90x \ x00V4 \ X12 \ xOO "
#4.2の議論:
#あなたは整数にしようとするとバイトの文字列にパックが、不適切のバイトサイズは、エラーメッセージが表示されます。
#必要に応じて、あなたがの価値維持するために使用する必要がありますどのように多くのビットを決定するために)(int.bit_lengthを使用することができます
X-23 = 523 **
#x.to_bytes(16、「リトル・」)#はOverflowError:int型は大きすぎるために変換する
(印刷します208:x.bit_length())「ビット#
商の、B及び残部からなるタプルを与えるためにnバイト、REM = divmod(x.bit_length(),. 8)#1 divmod(a、b)は

REM場合:残りの部分は1バイトまたは拡張残留ビット保存、保存する0だけが可能である場合#は、バイト8ビットを格納することができる
。nバイト+ = 1枚の
プリント(x.to_bytes(nバイト、「リトル」))#のB ' \ x03X \ XF1 \ x82iT \ X96 \ XAC \ xc7c \ X16 \ XF3 \ xb9 \ XCF \ X18 \ XEE \ XEC \ X91 \ XD1 \ x98 \ XA2 \ xc8 \ xd9R \ XB5 \ XD0 "

公開された17元の記事 ウォンの賞賛1 ビュー359

おすすめ

転載: blog.csdn.net/weixin_43520503/article/details/104394471