微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我目前正在研究二进制加密代码:[发件人(消息输入=>二进制转换)]:[接收器(二进制转换=>消息输出)]

截至目前,我已经能够转换基于文本的Msgs,例如)您好吗?等

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 (" ","\\"))

输出:10010001101111111111011110111001100001111001011001011011100111100111011111110101111111

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

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哦!你好吗?等等 基本上,未转换的消息是具有数字或特殊用途的消息 字符。 ?? 的消息输入给出“⌂▼” ,而 8879 给出“ qc?☺” ,而哦!您怎么样?给出“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_encrypt的输出,从而截断了前导零,因此8而不是00111000变成了111000,导致{{1 }}从下一个ASCII二进制字符开始使用,因为ASCII字符被表示为8位值,以打印数字2,并使用8897作为0011100000111000001110010011011100001010的输入。查找ASCII表以查看每个字符的二进制等效项。只需编辑代码即可。

binary_decrypt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。