我怎样才能使位翻转功能更易于 return 完整内容?

how can I make a bit flip function more manegable to return full content?

我正在尝试做一个更易于管理的函数,而不是每次都调用这条长线 data_stream = bytes(b ^ flipmask(0.08) for b in bytearray(content)) 我在 python 3 下工作,使用位翻转算法来改变位,但我想要稍微改进一下,使调用更易于管理 flipmask(data) 。我试图在 functools 之后进入该行,但它根本不起作用

def flipmask(p):
    return functools.reduce(lambda a, b: (a << 1) | int(random.random() < p), [0]*8)    
data_stream = bytes(b ^ flipmask(0.08) for b in bytearray(content))

你可以这样写:

def flipMask(p): 
    def apply(b): return b ^ sum( (random.random()<p)<<i for i in range(8) ) 
    return apply

然后 data_stream 可以使用 map():

屏蔽
data_stream = bytes( map(flipMask(0.8),bytearray(content)) )

而且,如果您经常创建字节数组:

def randomMask(p,content):
    return bytes( map(flipMask(p),bytearray(content)) )

然后:

data_stream = randomMask(0.8,content)