バイトの上位と下位のニブルを取得したい場合。換言すれば、8ビットを4ビットに分割する。 byte = "16"
ため1 6
を印刷し
high, low = byte[:1], byte[1:2]
print(high, low)
を:データ列を考慮
は、あなたが簡単に行うことができ、進数としてバイトの文字列です。 int(high, 16)
とint(low, 16)
を使用して小数点に変換できます。あなたはすでに、あなたが行うことで、高および低ニブルを抽出することができますint(byte, 16)
を使用して、10進数に16進数に変換した場合
:
high, low = byte >> 4, byte & 0x0F
print(hex(high), hex(low))
彼らは十六進に変換しているので、byte = 0x16
ため0x1 0x6
を印刷することになりますhex(x)
を使用してください。 hex(x)
には接頭辞0x
が追加されています。 hex(x)[2:]
を実行して削除することができます。
としてだからあなたのデータ列を考慮し
:
バイトを生み出す
bytes = "10,00,00,00,00,00,16,0A,20,20,20,20,00,00,00,00,00,00,00,00,50"
bytes = bytes.split(",")
for byte in bytes:
byte = int(byte, 16)
high, low = byte >> 4, byte & 0x0F
print(hex(byte), hex(high), hex(low))
、高ニブル:
その後 bytes = "10,00,00,00,00,00,16,0A,20,20,20,20,00,00,00,00,00,00,00,00,50"
それぞれハイとローのニブルを印刷するには、このような何かを行うことができます低ニブルはすべて16進数で表示されます。あなたはビット("{0:08b}".format(byte)
)でそれを持っている場合
はまた、あなたは今high, low
、それぞれが自分の4ビットを有する、このhigh, low = bits[:4], bits[4:8]
ようにそれを分割することができます。
これは試しただけでなく、宿題のように聞こえますか? – Vallentin
残念ながら私は試してみましたが、それを動作させるのに十分理解していません。私はそれが高および低バイトにどのように行くのかを調べるが、それはそれぞれの文字ですか?だから "ab"はaに2バイト、bに2バイトを持つだろうか?それはおそらく間違っているので、私は助けを求めました。私はそれが宿題であり、先生に私がちょうど尋ねることができることを望みました。 – Spacefigher
私の答えを見てください – Vallentin