Python 如何将二进制转换为字符串?

Python 如何将二进制转换为字符串?,python,python-3.x,encryption,encoding,binary,Python,Python 3.x,Encryption,Encoding,Binary,我目前正在处理二进制加密代码:[发送方(Msg输入=>二进制转换)]:[接收方(二进制转换=>Msg输出] 到目前为止,我能够转换基于文本的MSG,例如)你好吗?等等 print("Enter Msg:") def Binary_Encryption(message): message = ''.join(format(i, 'b') for i in bytearray(message, encoding ='utf-8')) print(message)

我目前正在处理二进制加密代码:[发送方(Msg输入=>二进制转换)]:[接收方(二进制转换=>Msg输出]

到目前为止,我能够转换基于文本的MSG,例如)你好吗?等等

print("Enter Msg:")
def Binary_Encryption(message):
    message = ''.join(format(i, 'b') for i in bytearray(message, encoding ='utf-8'))
    print(message)
Binary_Encryption(input("").replace (" ","\\"))
输出:10010001101111111110111001100001111001011001100101110011111111111101111111101011111111

获得二进制字符串后,只需复制该字符串并将其放在该代码块中,即可对其进行解密

def Binary_Decryption(binary):
    string = int(binary, 2)
    return string

bin_data = (input("Enter Binary:\n"))
str_data =''

for i in range(0, len(bin_data), 7):

    temp_data = bin_data[i:i + 7]

    decimal_data = Binary_Decryption(temp_data)

    str_data = str_data + chr(decimal_data)

print("Decrypted Text:\n"+str_data.replace("\\"," "))
输出:你好吗

但我无法转换某些输入,例如,8879,噢!你好吗等 基本上,未被转换的MSG是具有数字或特殊用途的MSG 人物。
的消息输入?给出“⌂▼"8879给出质量控制?☺“噢!你好吗?给予OhC9◄_o9CeK93_k▼

我认为问题在于特殊字符(!,?)只包含6位,而其他字符包含7位。如果我认为特殊字符后面有其他字符,这会把事情搞砸。也许像这样的事情应该管用。不过,也许有更好的办法来解决这个问题

def Binary_Encryption(message):
    s = ""
    for i in bytearray(message, encoding="utf-8"):
        c = format(i, "b")  
        addon = 7 - len(c) 
        c = addon * "0" + c  # prepend 0 if len shorter than 7
        s += c  # Add to string

    print(s)

您的问题是,您正在直接复制
binary\u encrypt
的输出,该输出截断前导零,因此
8
而不是
00111000
它变成
111000
,这导致从下一个ASCII二进制字符使用
2
位,因为ASCII字符被表示为8位值打印编号
8897
使用
00111000001100000110010011011100001010
作为二进制解密的输入。查找ASCII表以查看每个字符的二进制等价物。只需像这样编辑代码

print("Enter Msg:")
def Binary_Encryption(message):
# pass 08b to format
    message = ''.join(format(i, '08b') for i in bytearray(message, encoding ='utf-8'))
    print(message)
Binary_Encryption(input("").replace (" ","\\"))