我正在研究霍夫曼编码和解码。我已经使用霍夫曼算法将字符串编码为二进制文件,现在我想使用Python 3通过套接字将其发送到另一台计算机,其中编码数据将被解码回来。这样做最有效的方法是什么?
代码的编码器部分:
sqlContext.sql("select * from table1 CROSS JOIN table2 CROSS JOIN table3...")
答案 0 :(得分:0)
您需要以字节码发送字符串值,然后您可以执行:socket.send(byte(message,'utf-8'))
或socket.send(message.encode())
如果您想发送一些纯文本,可以直接发送:b'Spain'
但如果您的文字是utf-8(非ascii),则必须执行:'España'.encode()
查看此客户端示例,并观看默认情况下使用UTF-8的.encode()
和.decode()
:
#!/usr/bin/python3
import socket
s = socket.socket()
s.connect(("localhost", 9999))
while True:
msg = input("> ")
s.send(msg.encode())
if msg == "quit":
break
received=s.recv(1024)
print(received.decode())
print("Bye")
s.close()
答案 1 :(得分:0)
看看https://docs.python.org/3/howto/unicode.html 当尝试发送原始的8位二进制数据时,Python会在遵循以下规则通过套接字发送数据之前对其进行编码:
“如果值<128,则用相应的字节表示 值。如果该值> = 128,则将其转换为两个序列, 三个或四个字节,其中序列的每个字节在128之间 和255。”
一旦您设法将8位数据数组转换为字符串,请使用发送该字符串
socket.send_string(yourstring.encode('latin-1')