将字典转换为字节,然后再转换回python?

2024-04-24 12:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在两台机器之间发送一些变量的值,并打算使用套接字来完成。我使用md5哈希算法作为发送数据的校验和,以确保数据正确传输。要执行md5哈希算法,我必须将数据转换为字节。我想同时传送变量名和它的值。因为我有很多变量,所以我用字典。

所以我想把这样的数据转换成字节?

variables = {'var1' : 0, 'var2' : 'some string', 'var1' : ['listitem1','listitem2',5]}

换句话说,我有一个字典,里面有很多不同的数据类型,包括列表,列表中有多个不同的数据类型,我想把它们转换成字节。然后在接收机器上将这些字节转换回字典。

我尝试了一些不同的方法,这里建议使用json(Convert a python dict to a string and back),但是我不能用seam来生成一个字符串,不用担心字节。


Tags: 数据算法机器列表string字典字节some
2条回答

这应该有效:

s=json.dumps(variables)
variables2=json.loads(s)
assert(variables==variables2)

如果需要将字典转换为二进制,则需要将其转换为上一个答案中描述的字符串(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]}

相关问题 更多 >