0

文字を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))
4

1 に答える 1

0

とった。reduce の初期化値がありませんでした:

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)),0) for x in split((ord(k) for k in key),word_size/8))
于 2013-01-29T11:46:07.733 に答える