使用我发现的一些代码来使用 Python 套接字来制作 telnet 服务器。服务器代码工作正常。我需要向/从客户端发送十六进制字符串来逃避字符问题。当我像这样向客户端发送数据时:
conn.sendall('\x74\x65\x73\x74\x31\x32\x33\x0D\x0A')
或者
test_var = '\x74\x65\x73\x74\x31\x32\x33\x0D\x0A'
conn.sendall(test_var)
它工作完美。当我尝试创建一个字符串并将其存储在一个变量中时(如以下 kludge):
def recover_raw_data(data):
data_list = []
hex_list = []
for items in data:
data_list.append(ord(items))
for items in data_list:
hex_list.append("\\")
value = '%02X' % int(items)
hex_list.append("0x" + value)
print hex_list
almost_final_data = "".join(hex_list)
just_about_final_data = almost_final_data.replace('\\0x', '\\x')
final_data = just_about_final_data
print final_data
conn.sendall(final_data)
return()
您可以打印这个混乱的输出,它看起来是正确的,Wireshark 捕获显示数据包从字面上发出,而不是 ascii ......
例如\x31\x32\x33\x34\x35\x0D\x0A
我已经尝试了 .encode 和我在 Google 上找到的大量其他想法......想知道为什么我不能从有效的变量创建字符串......任何帮助将不胜感激。