Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字典转换为字节,然后再转换回python?_Python_Variables_Dictionary_Byte - Fatal编程技术网

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

将字典转换为字节,然后再转换回python?,python,variables,dictionary,byte,Python,Variables,Dictionary,Byte,我需要在两台机器之间发送一些变量的值,并打算使用套接字来完成。我使用md5哈希算法作为发送数据的校验和,以确保数据正确传输。要执行md5哈希算法,我必须将数据转换为字节。我想传输变量的名称及其值。因为我有很多变量,所以我使用字典 我想把这样的东西转换成字节 variables = {'var1' : 0, 'var2' : 'some string', 'var1' : ['listitem1','listitem2',5]} 换句话说,我有一个字典,里面有很多不同的数据类型,包括列表,列表中

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

我想把这样的东西转换成字节

variables = {'var1' : 0, 'var2' : 'some string', 'var1' : ['listitem1','listitem2',5]}
换句话说,我有一个字典,里面有很多不同的数据类型,包括列表,列表中有多个不同的数据类型,我想把它们转换成字节。然后在接收机器上将这些字节转换回字典

我尝试了几种不同的方法,这里推荐使用json(),但我无法使用它生成字符串,更不用说字节了。

这应该可以:

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]}

您的问题与您链接的问题有何不同?你说你试过“几种不同的方法”。关注其中一个。告诉我们你尝试了什么,给我们看你的代码,告诉我们什么对你不起作用。我喜欢的一个没有提供示例A bytestring是bytes。@user1205406:如果你不知道如何读取某个人已经为你链接的内容,那么我想你不会知道如何读取某个人从这些文档顶部复制的示例,我知道如何阅读文档,我的问题是,有没有一种方法可以直接将字典转换为ByTestString,而不必先将其转换为字符串
dumps
将对象转储到
str
notbytes@VicX,要获取字节,可以使用
json.dumps(变量).encode('utf-8')
然后要从字节转换回来,可以使用
json.loads(s.decode('utf-8'))
@Jed,但问题是关于字节的