首页 > 解决方案 > 如何在python3中否定字节

问题描述

我试图解决有人发布的这个加密谜题,我试图在 python3 中自动化它,但遇到了一些麻烦。这让我发疯,我不知道该怎么做。

它涉及进行 base64 解码,它给出了字节类型。

我想遍历这个字节集合,并对每个字节进行按位取反。也就是说,例如10010001(145)应该变成01101110(110)。~ 运算符给了我两个恭维,但产生了负整数。我想使用无符号字节。

我怎样才能在 python 3 中做到这一点?

我想做的psudocode:

[ bitwise_negate(x) for x in my_byte_array ]

标签: pythonpython-3.x

解决方案


您可以使用 pythonbase64模块首先将字符串解码为其相应的字节,然后您可以将每个字节与 255 (11111111) 进行异或运算以获取生成的 ascii 点码并用于chr获取实际字符

import base64
string = 'l4uLj8XQ0J2Wi9GThtDMzJGUmbKluw=='
decoded = base64.decodebytes(bytes(string, encoding='utf-8'))
print("".join([chr(item ^ 255) for item in decoded]))

推荐阅读