我正在进行一些简单的文件加密/解密练习,目前只是读入一堆字节并逐个对每个字节执行适当的位操作,然后将它们写入输出文件。
这种方法似乎相当慢。例如,如果我想将每个字节都异或0xFF,我会循环遍历每个字节并异或0xFF,而不是使用某些魔法快速地异或每个字节。
有没有更好的方法来执行位操作,而不是每次一个字节?
我正在进行一些简单的文件加密/解密练习,目前只是读入一堆字节并逐个对每个字节执行适当的位操作,然后将它们写入输出文件。
这种方法似乎相当慢。例如,如果我想将每个字节都异或0xFF,我会循环遍历每个字节并异或0xFF,而不是使用某些魔法快速地异或每个字节。
有没有更好的方法来执行位操作,而不是每次一个字节?
编辑:糟糕,我刚注意到[Python]
标签以及另一个回答中关于numpy的参考。
需要注意... 虽然Numpy按位数组建议是有道理的,但这完全取决于实际问题的参数。例如,使用numpy的位运算函数暗示了基础数组的排列可能会浪费相当多的时间。
请参见此Stack Overflow问题,它似乎非常相关。虽然专注于异或操作,但该问题提供了许多可行的提示,可以改进循环等,并进行一般性的分析。