Python 如何将二进制转换为字符串?
我目前正在处理二进制加密代码:[发送方(Msg输入=>二进制转换)]:[接收方(二进制转换=>Msg输出] 到目前为止,我能够转换基于文本的MSG,例如)你好吗?等等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)
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 (" ","\\"))