2014-07-18 10 views
5

क्या id अंतर्निहित फ़ंक्शन का विपरीत या उलटा है? मैं इसे बहुत अधिक समय लेने के बिना स्ट्रिंग को एन्कोड और डीकोड करने के लिए सोच रहा था या PyCrypto लाइब्रेरी की तरह बहुत अधिक उपर है। मेरे लिए आवश्यकता काफी सरल है इसलिए मैं एक साधारण एन्कोड और डीकोड के लिए PyCrypto का उपयोग नहीं करना चाहता हूं।आईडी के पाइथन उलटा फ़ंक्शन (...) अंतर्निहित फ़ंक्शन

कुछ की तरह:

>>> id("foobar") 
4330174256 
>>> reverse_id(4330174256) # some function like this to reverse. 
"foobar" 
+0

से क्रेडिट चोरी करने के लिए नहीं है [ 'base64'] (https://docs.python.org/2/library/base64.html) अपनी आवश्यकताओं बेहतर फिट हो सकता है ... – dano

+6

'id' एक स्ट्रिंग एन्कोडिंग फ़ंक्शन नहीं है। यह पास ऑब्जेक्ट के लिए एक अद्वितीय आईडी देता है, जो रनों के बीच बदल सकता है। –

उत्तर

8

मैं चाहता हूँ man who answered the question

This can be done easily by ctypes: 

import ctypes 
a = "hello world" 
print ctypes.cast(id(a), ctypes.py_object).value 
output: 

hello world 
+0

आह, अच्छा! मुझे लगता है कि मैंने पेज के नीचे काफी स्क्रॉल नहीं किया था। मुझे अभी भी लगता है कि ओपी क्या करने की कोशिश कर रहा है, इसके लिए 'बेस 64' अधिक उपयुक्त है। – dano

+1

@ डैनो मुझे ऐसा भी लगता है लेकिन उसने जवाब दिया ** क्या आईडी अंतर्निहित फ़ंक्शन के विपरीत या उलटा है? ** –

+0

ओह, निश्चित रूप से (यही कारण है कि मैंने आपको ऊपर उठाया)। लेकिन कभी-कभी ओपी सोचता है कि उन्हें एक प्रश्न के उत्तर की आवश्यकता है, जब उन्हें वास्तव में एक अलग प्रश्न के अलग जवाब की आवश्यकता होती है। – dano

3

मुझे लगता है कि base64 मॉड्यूल अपनी आवश्यकताओं यहां फिट होता है, बल्कि id उपयोग करने के लिए कोशिश कर रहा से:

>>> import base64 
>>> base64.b64encode("foobar") 
'Zm9vYmFy' 
>>> base64.b64decode('Zm9vYmFy') 
'foobar' 

अपने शाब्दिक सवाल का जवाब (मैं देख सकते हैं इसकी आईडी द्वारा एक वस्तु?) उत्तर दिया गया है here संक्षिप्त उत्तर नहीं है, आप नहीं कर सकते। संपादित करें: विक्टर कैस्टिलो टोरेस this actually is possible पर पोनिट्स करते हैं यदि आप ctypes मॉड्यूल के माध्यम से सीपीथॉन का उपयोग कर रहे हैं।

संबंधित मुद्दे