2つのマシン間でいくつかの変数の値を送信し、ソケットを使用してそれを実行する必要があります。データが正しく送信されるように、送信するデータのチェックサムとしてmd5ハッシュアルゴリズムを使用します。 md5ハッシュアルゴリズムを実行するには、データをバイトに変換する必要があります。変数の名前とその値の両方を送信したい。変数がたくさんあるので、辞書を使います。
だから私はこのようなものをバイトに変換したいですか?
variables = {'var1' : 0, 'var2' : 'some string', 'var1' : ['listitem1','listitem2',5]}
言い換えると、リストに複数の異なるデータ型が含まれるさまざまなデータ型を含む辞書があり、それをバイトに変換したいのです。次に、受信側のマシンでこれらのバイトを辞書に戻します。
私はjsonがここで推奨されているいくつかの異なる方法を試しました( Convert a python dict to a string and back )が、私はそれを使って文字列を生成することはできませんバイトを気にしません。
これは動作するはずです:
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]}