我在我的程序中有这样一行:TextV = base64.b64decode('0cQ+bNsObaw=')
,TextV
的值是b'\xd1\xc4>l\xdb\x0em\xac'
。然后我运行这个将TextV转换成二进制:
TextVBin = ''.join(format(x, 'b') for x in bytearray(TextV))
而TextVBin
的值是'11010001110001001111101101100110110111110110110110101100'
。现在,我想再次将TextVBin格式转换为TextV格式(即b'\xd1\xc4>l\xdb\x0em\xac'
),但是我在google上找不到任何答案。如何在python3中实现这一点?在
问题是格式字符串截断了前导的零。你应该用
它将用8个二进制数字格式化每个字节。然后,要逆转,只要做
^{pr2}$例如:
我会用:
将
TextV
转换为二进制字符串。在然而,它生成的
1101000111000100001111100110110011011011000011100110110110101100
与您自己的输出不同,但我想这是因为每个字节的前导0都是用您自己的方法截断的。所以你的方法是错误的。在使用结构:
1101000111000100001111100110110011011011000011100110110110101100
使用您的:
1101000111000100 111110 110110011011011 1110 110110110101100
然后将这个二进制字符串转换回字节:
^{pr2}$注意:根据您的示例,我假设您的TextVBin是8个字节长的big-endian。如果长度是可变的,我的答案不适用。在
相关问题 更多 >
编程相关推荐