python - 将字符串转换为二进制,然后异或二进制

标签 python python-2.7

所以我尝试使用以下方法将字符串转换为二进制文件,然后对二进制文件进行异或

def string_to_binary(s):
    return ' '.join(map(bin,bytearray(s,encoding='utf-8')))

def xor_bin(a,b):
    return int(a,2) ^ int(b,2)

当我尝试运行 xor_bin 函数时,出现以下错误:

Exception has occurred: exceptions.ValueError
invalid literal for int() with base 2: '0b1100010 0b1111001 0b1100101 0b1100101 0b1100101'

我看不出这里出了什么问题。

最佳答案

bin 在这里不好;它不会填充到八位数字(因此,每当高位为 0 时,您就会丢失数据对齐,并将该丢失左侧的所有位误解为比应有的幅度低) ,并且它添加了您不需要的 0b 前缀。 str.format 可以通过零填充和省略 0b 前缀来解决这两个问题(我还删除了连接字符串中的空格,因为您不希望在结果):

def string_to_binary(s):
    return ''.join(map('{:08b}'.format, bytearray(s, encoding='utf-8')))

有了这个,string_to_binary('byeee')得到你想要的'0110001001111001011001010110010101100101',这就是你想要的,而不是'0b1100010 0b1111001 0b1100101 0b11 00101 0b1100101' 这显然不是一个(单个)有效的以 2 为基数的整数。

关于python - 将字符串转换为二进制,然后异或二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55034041/

相关文章:

python - 使用 HTTP POST 从服务器打印响应 JSON

python-2.7 - 由于 Windows 程序文件权限,conda 更新 conda 无法正常工作

python - 类型错误 : Odd-length string when decoding hex string

Python:如何获取方括号内的多个元素

python - 从 python 2.7 中的列表中删除每个第 n 个元素

python - "ValueError: expected ' : ' after conversion specifier" when trying to authorise on site with x-api-key

python - 相关向量机

Python Plotnine - 创建堆积条形图

python - Numpy 多维数组赋值未知登录错误

Django - 没有名为 _sqlite3 的模块