我怎样才能使位翻转功能更易于 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)
我正在尝试做一个更易于管理的函数,而不是每次都调用这条长线 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)