2013-10-07 3 views
5

मुझे दो मशीनों के बीच कुछ चर के मूल्य भेजने की आवश्यकता है और सॉकेट का उपयोग करके इसे करने का इरादा है। मैं एमडी 5 हैश एल्गोरिदम का उपयोग डेटा के लिए चेकसम के रूप में करता हूं ताकि यह सुनिश्चित किया जा सके कि डेटा सही ढंग से प्रेषित हो। Md5 हैश एल्गोरिदम करने के लिए मुझे डेटा को बाइट्स में कनवर्ट करना होगा। मैं चर के नाम और उसके मूल्य दोनों को प्रेषित करना चाहता हूं। जैसा कि मेरे पास बहुत सारे चर हैं, मैं एक शब्दकोश का उपयोग करता हूं।शब्दकोश को बाइट्स में कनवर्ट करें और फिर से पाइथन वापस करें?

तो क्या मैं इस तरह कुछ बाइट्स में कनवर्ट करना चाहता हूं?

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

दूसरे शब्दों में मैं सूचियों जो उन्हें वापस में एक से अधिक विभिन्न डेटा प्रकार है और मुझे लगता है कि परिवर्तित करने के लिए बाइट्स में चाहते सहित इसके अंदर विभिन्न डेटा प्रकार का एक बहुत के साथ एक शब्दकोश है। फिर प्राप्त करने वाली मशीन पर उन बाइट्स को वापस एक शब्दकोश में परिवर्तित करें।

मैंने कुछ अलग-अलग तरीकों की कोशिश की है जो जेसन की सिफारिश की गई है (Convert a python dict to a string and back) लेकिन मैं इसके साथ एक स्ट्रिंग का उत्पादन करने के लिए सीम नहीं कर सकता, कभी भी बाइट्स को ध्यान में रखता हूं।

+4

अपने प्रश्न कैसे एक आप से जुड़ा हुआ से अलग है दे देंगे? आप कहते हैं कि आपने "कुछ अलग तरीकों" की कोशिश की है। एक पर ध्यान केंद्रित करें। हमें बताएं कि आपने क्या प्रयास किया है, हमें अपना कोड दिखाएं, और हमें बताएं कि आपके लिए क्या काम नहीं किया है। –

+0

जिसे मैंने पसंद किया है, उदाहरण नहीं दिया गया है – user1205406

+0

ए बाइटस्ट्रिंग बाइट्स है। – Marcin

उत्तर

12

यह काम करना चाहिए:

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

'डंप 'ऑब्जेक्ट को' str 'बाइट्स पर डंप नहीं करता – VicX

7

आप बाइनरी शब्दकोश कन्वर्ट करने के लिए की जरूरत है, तो आप इसे एक स्ट्रिंग (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]} 
संबंधित मुद्दे