如何解决如何将二进制转换为字符串?
我目前正在研究二进制加密代码:[发件人(消息输入=>二进制转换)]:[接收器(二进制转换=>消息输出)]
截至目前,我已经能够转换基于文本的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] 举报,一经查实,本站将立刻删除。