将字典转换为字节并再次返回python? [复制]

Posted

技术标签:

【中文标题】将字典转换为字节并再次返回python? [复制]【英文标题】:Convert dictionary to bytes and back again python? [duplicate] 【发布时间】:2013-10-14 10:47:44 【问题描述】:

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

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

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

换句话说,我有一个字典,其中包含许多不同的数据类型,包括列表,这些列表又具有多种不同的数据类型,我想将其转换为字节。然后在接收机器上将这些字节转换回字典。

我尝试了几种不同的方法 json 在此处推荐 (Convert a python dict to a string and back),但我无法用它缝合生成字符串,更不用说字节了。

【问题讨论】:

您的问题与您链接的问题有何不同?您说您尝试了“几种不同的方法”。专注于一个。告诉我们您尝试了什么,向我们展示您的代码,并告诉我们哪些不适合您。 我喜欢的没有提供示例 一个字节串就是字节。 @user1205406:如果您不知道如何阅读某人已经为您链接的the docs,那么我认为您不会知道如何阅读某人复制的示例来自那些相同文档的顶部,或者某人从头开始编写的等效示例。 我知道如何阅读文档我的问题实际上是有没有办法将字典直接转换为字节串,而无需先将其转换为字符串 【参考方案1】:

这应该可行:

import json

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

【讨论】:

dumps 将对象转储到 str 而不是字节 @VicX,要获取字节,您可以使用json.dumps(variables).encode('utf-8'),然后从字节转换回来,您可以使用json.loads(s.decode('utf-8')) @Jed 但问题涉及字节【参考方案2】:

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

【讨论】:

以上是关于将字典转换为字节并再次返回python? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中将 libGDX 的纹理转换为字节数组并再次返回

将字典转换为字符串,然后再次返回字典

OpenCV将图像转换为字节并返回

如何将json字符串转换为字典并在键中保存顺序? [复制]

如何将字节类型转换为字典?

递归地将python对象图转换为字典