问题
Is there a reverse or inverse of the id
built-in function? I was thinking of using it to encode and decode string without taking too much time or having a lot of overhead like the PyCrypto
library. The need for me is quite simple so I don't want to use PyCrypto
for a simple encode and decode.
Something like:
>>> id("foobar")
4330174256
>>> reverse_id(4330174256) # some function like this to reverse.
"foobar"
回答1:
I do not wanna to steal the credits from the 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
回答2:
I think the base64 module would fit your needs here, rather than trying to use id
:
>>> import base64
>>> base64.b64encode("foobar")
'Zm9vYmFy'
>>> base64.b64decode('Zm9vYmFy')
'foobar'
The answer to your literal question (can I look up an object by its id?) is answered here. The short answer is no, you can't. Edit: Victor Castillo Torres ponits out that this actually is possible if you're using CPython, via the ctypes
module.
来源:https://stackoverflow.com/questions/24815771/python-inverse-function-of-id-built-in-function