我可以将字符打包成 32 位字(或任何其他固定大小),但我想以位为单位的大小作为参数:
以下是适用于 32 位的方法:
def vectorize_key(key):
return (v[0] << 24 | v[1] << 16 | v[2] << 8 | v[3] for v in split((ord(k) for k in key),4) )
这是行不通的。它说int and tuple bad operands for |
,但我看不到我是如何在那里得到一个元组的。我明确地“解包”了元组!:
def vectorize_key(key,word_size=32):
return (reduce(lambda p, (e,f) : p | (e << f),((x[i],i*8) for i in range(word_size/8))) for x in split((ord(k) for k in key),word_size/8))