繁体   English   中英

如何使用python反转字符串中每个字符的位

[英]How to reverse the bits of each character in a string using python

我想找到一种方法来使用python反转字符串中每个字符的位。

例如,如果我的第一个字符为J ,则为ASCII 0x4a0b01001010 ,因此将其反转为0x520b01010010 如果我的第二个字符是K ,则为0b01001011 ,因此将其反转为0xd20b11010010等。

最终结果应以string形式返回。

在这里,速度是我的第一要务,因此我正在寻找一种快速的方法来实现这一目标。

如果速度是您的目标,并且您正在使用ASCII,因此您只需要处理256个8位值,请事先计算反转字节的值,并将其放入一个bytearray ,然后通过索引到bytearray查找它们。

接受建议后,这是我的解决方案:

# Pre-populate a look-up array with bit-reversed integers from 0 to 255
bytearray = []
for i in range(0, 256):
    bytearray.append(int('{:08b}'.format(i)[::-1], 2))

# Reverses the bits of each character in the input string and returns the result
# as a string
def revstr(string):
    return ''.join([chr(bytearray[ord(a)]) for a in list(string)])

print "JK".encode("hex")         # 0x4a4b
print revstr("JK").encode("hex") # 0x52d2
 a=bin(ord("a"))
'0b'+a[::-1][0:len(a)-2]

如果要对很多字符执行此操作,则只有256个ascii字符。 将反向的字符串存储在哈希图中,并在哈希图中进行查找。 这些查找的时间复杂度为O(1),但是有一个固定的设置时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM