我需要在两台机器之间发送一些变量的值,并打算使用套接字来完成它。我使用md5哈希算法作为我发送的数据的校验和,以确保数据被正确传输。要执行md5哈希算法,我必须将数据转换为字节。我想传输变量的名称及其值。因为我有很多变量,所以我使用字典。
所以我想把这样的东西转换为字节?
variables = {'var1' : 0, 'var2' : 'some string', 'var1' : ['listitem1','listitem2',5]}
换句话说,我有一个字典,里面有很多不同的数据类型,包括列表,而这些列表中又包含多种不同的数据类型,我希望将其转换为字节。然后在接收机器上将这些字节转换回字典。
我已经尝试了一些不同的方法json在这里被推荐(Convert a python dict to a string and back)但是我不能接缝来生成一个字符串,它从不介意字节。
答案 0 :(得分:22)
这应该有效:
s=json.dumps(variables)
variables2=json.loads(s)
assert(variables==variables2)
答案 1 :(得分:10)
如果您需要将字典转换为二进制文件,则需要将其转换为字符串(JSON),如上一个答案中所述,然后您可以将其转换为二进制文件。
例如:
my_dict = {'key' : [1,2,3]}
import json
def dict_to_binary(the_dict):
str = json.dumps(the_dict)
binary = ' '.join(format(ord(letter), 'b') for letter in str)
return binary
def binary_to_dict(the_binary):
jsn = ''.join(chr(int(x, 2)) for x in the_binary.split())
d = json.loads(jsn)
return d
bin = dict_to_binary(my_dict)
print bin
dct = binary_to_dict(bin)
print dct
将提供输出
1111011 100010 1101011 100010 111010 100000 1011011 110001 101100 100000 110010 101100 100000 110011 1011101 1111101
{u'key': [1, 2, 3]}