pythonにおけるシフト演算の時に、16進数を維持したまま2byte左シフトしてパディング処理を施すことを考えます。
python
1num = 0xaaaa 2 3length = len(bin(num)) - 2 4 5#print(bin(num)) 6 7num = num << 32 - length 8 9print(hex(num))
このようにした場合、答えが0xaaaa0000と表示され、
16進数が損なわれることなく左シフトすることが出来ました。
しかし、
python
1num = 0x11aa 2 3length = len(bin(num)) - 2 4 5#print(bin(num)) 6 7num = num << 32 - length 8 9print(hex(num))
とした場合、0x8d500000となり、欲しい結果0x11aa0000とは異なりました。
このような現象を引き起こさないためにはどうしたらよいのでしょうか。
どなたかご教授頂けたら幸いです。
言葉足らずで本当に申し訳ないです。
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。