は、このを見てみましょう:Python、Hexは最初の0を削除しますか?
fc = '0x'
for i in b[0x15c:0x15f]:
fc += hex(ord(i))[2:]
は、このコードは六角00 04 0Fを発見したとしましょう、代わりにそのように書くのではなく、最初の0を削除し、書き込み:04F を任意のヘルプ?
は、このを見てみましょう:Python、Hexは最初の0を削除しますか?
fc = '0x'
for i in b[0x15c:0x15f]:
fc += hex(ord(i))[2:]
は、このコードは六角00 04 0Fを発見したとしましょう、代わりにそのように書くのではなく、最初の0を削除し、書き込み:04F を任意のヘルプ?
hex()
は、先頭の0を含みませんので、これは、例えば、何が起こっている:
>>> hex(15)[2:]
'f'
は、あなたが常に得ることを確認するには2つの文字、あなたが必要なときに先行ゼロを追加するためにstr.zfill()
を使用することができます。
ここ義和がありますそれはあなたのコードに次のようになりますT:
fc = '0x'
for i in b[0x15c:0x15f]:
fc += hex(ord(i))[2:].zfill(2)
print ["0x%02x"%ord(i) for i in b[0x15c:0x15f]]
フォーマット文字列"%2x"
を使用ワイド2つの文字にするためにそれをフォーマットすることを指示し、同様に"%02x"
これはまだ2つ以上で物事から先頭の0を削除することを0の
ノートでパッドにそれを伝えます16進数の値 例:"0x%02x"%0x0055 => "0x55"
これはまだあなたの便宜のためのグラフィカル表現です。
値は実際にはデータから削除されません。視覚的に短縮されています。
詳しいここに記述し、それがあるか、それは重要ではありません理由理由:Why are hexadecimal numbers prefixed with 0x?
いいえ、それはデータから取り除かれ、私は出力を印刷してみました、そして、それは異なる値を与え、04Fがために 'あまりにも多くの異なる00040f – thethiny
>>> map("{:02x}".format, (10, 13, 15))
['0a', '0d', '0f']
です。これは、最も上書きされた答えよりも非常に非凡です。 +1! – Antonvh
よりBにおけるI [0x15c:0x15f]: \t \t H =ヘキサ(ORD(I))[2]! \t \t lenの(H)= 2の場合:H = '0' + H \t \t FC + = h; ' 友人はこれが働くと言った – thethiny
最後に、適切に説明された仕事の例s! – monojohnny
私はそれが適切に説明されたとは言わず、私は説明するのが最善ではない。それは16進値の10進値には何も意味しないので、先行ゼロを無視します。これらの値は、値が使用するバイト数を示します。 15 = f。 0f = 15のため、0 + 15は15 –