先頭から2文字ずつ取る
16進ダンプデータを変換するスクリプトを書いていて、
色々邪魔な文字を削除した後の任意の長さの16進数データを得たとする。
これから、
というリストを得たい。
そんなとき書いたスクリプトがこれでした。
しかし、もっとエレガントに書けないかとおもって、工夫したのがこれ。
len()やidxなどの変数や概念が無くなった所がPythonっぽくっていいと思ったのだが、
これを動かそうとしていた環境がPython2.2しか入っていなくて、結局元に戻した。
色々邪魔な文字を削除した後の任意の長さの16進数データを得たとする。
0123456789abcdef
これから、
[0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef]
というリストを得たい。
そんなとき書いたスクリプトがこれでした。
def bytelist(s):
result = []
for idx in range(0,len(s),2):
result.append(int('0x'+s[idx:idx+2],16))
return result
for x in bytelist('0123456789abcdef'):
print "%s " % hex(x),
しかし、もっとエレガントに書けないかとおもって、工夫したのがこれ。
def bytelist(s):
result = []
for a,b in zip(s[0::2],s[1::2]):
result.append(int('0x%s%s' % (a,b),16))
return result
len()やidxなどの変数や概念が無くなった所がPythonっぽくっていいと思ったのだが、
これを動かそうとしていた環境がPython2.2しか入っていなくて、結局元に戻した。