将字典转换为字节并再次转换为字典在Python中如何实现?

10 浏览
0 Comments

将字典转换为字节并再次转换为字典在Python中如何实现?

我需要在两台机器之间发送一些变量的值,并打算使用套接字进行传输。我使用md5哈希算法作为发送的数据的校验和,以确保数据正确传输。为了执行md5哈希算法,我必须将数据转换为字节。我想要传输变量的名称和其值。由于我有很多变量,所以我使用了一个字典。\n所以我想把这样的东西转换成字节?\nvariables = {\'var1\' : 0, \'var2\' : \'some string\', \'var1\' : [\'listitem1\',\'listitem2\',5]}\n换句话说,我有一个字典,其中包含许多不同的数据类型,包括列表,而列表中又包含多个不同的数据类型,我希望将其转换为字节。然后在接收机上将这些字节转换回字典。\n我尝试了一些不同的方法,这里推荐使用json(将python字典转换为字符串并返回),但我似乎无法生成一个字符串,更不用说字节了。

0
0 Comments

在Python中,有时候我们需要将一个字典对象转换为字节形式(binary),然后再将其恢复为原始的字典对象。下面给出了一个例子,展示了如何进行这样的转换。

首先,我们需要将字典对象转换为字符串形式,这里使用了JSON格式。然后,我们将字符串转换为字节形式。

具体的代码如下所示:

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
my_dict = {'key' : [1,2,3]}
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]}

这个问题的出现原因是,有时候我们可能需要将字典对象转换为字节形式,以便在网络传输或者存储时使用。而解决方法就是使用JSON将字典转换为字符串,然后再将字符串转换为字节形式。通过这种方式,我们可以方便地将字典对象转换为字节形式,并在需要时重新恢复为原始的字典对象。

0
0 Comments

问题:如何将字典转换成字节并再次转换回字典?

原因:dumps函数将对象转换成字符串而不是字节。所以需要使用json.dumps(variables).encode('utf-8')将其转换成字节,然后使用json.loads(s.decode('utf-8'))将字节转换回字典。

解决方法:使用json.dumps(variables).encode('utf-8')将字典转换成字节,然后使用json.loads(s.decode('utf-8'))将字节转换回字典。

0