gpt4 book ai didi

python - python3中的高效位交换

转载 作者:太空狗 更新时间:2023-10-30 02:18:56 26 4
gpt4 key购买 nike

我很难在 python3 中处理位交换。

到目前为止,我在 C 中找到了快速位交换算法 herehere ,但我无法将其正确转换为 python3,因为处理数据、使用正确的数据类型并且不被不同的编码混淆对我来说是不可能的。

对我有用的唯一解决方案是使用 BitArray 进行这样的交换:

with open(file_swapped, 'wb') as out, open(file, 'rb') as inp:
byte_in = inp.read(1)
while byte_in:
tmp = bitstring.BitArray(byte_in)
tmp.reverse()
byte_out = tmp._getbytes()
byte_in = inp.read(1)

然而,该算法需要超过 2 分钟来处理需要进行位交换的数据。对该算法的分析表明,创建 BitArray 占用了总时间的大部分。

每次尝试将二进制输入数据转换为“0”和“1”或整数的字符串,手动执行“交换”部分,都失败了,因为数据没有特定的编码(utf-8/utf- 16 没有工作)

这是我的 Input Data 的一个例子

有人知道完成上述任务的快速方法吗?

最佳答案

您可以尝试类似以下的方法。这使用 Python 的 bytes.maketrans()translate()功能。

def reverse_bits(x):
return (int('{:08b}'.format(x)[::-1], 2))

reverse_table = bytes.maketrans(bytes(range(0,256)), bytes(reverse_bits(x) for x in range(0, 256)))

with open('input.txt', 'rb') as f_input, open('output.txt', 'wb') as f_output:
data = f_input.read()
f_output.write(data.translate(reverse_table))

这首先创建一个转换表,然后立即将其应用于整个输入文件的内容。

关于python - python3中的高效位交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com