मैं पूर्णांक पता निकालना चाहता हूं जो ctypes.c_char_p
उदाहरण बिंदुओं को निकालने के लिए है।ctypes.c_char_p उदाहरण के सूचक पते को कैसे प्राप्त करें
उदाहरण के लिए,
>>> import ctypes
>>> s = ctypes.c_char_p("hello")
>>> s
c_char_p(4333430692)
मूल्य मैं लाने के लिए चाहते हैं, उसमें ४३३३४३०६९२ है - स्मृति में स्ट्रिंग hello\0
का पता:
(lldb) x 4333430692
0x1024ae7a4: 68 65 6c 6c 6f 00 5f 70 00 00 00 00 05 00 00 00 hello._p........
मैं ctypes पढ़ा है दस्तावेज़, लेकिन ऐसा करने का कोई तरीका नहीं प्रतीत होता है। निकटतम ctypes.addressof
है, लेकिन यह केवल मुझे पॉइंटर का स्थान देता है।
मुझे यह कारण क्यों है क्योंकि मैं कुछ सी कार्यों को बुला रहा हूं जो वास्तव में पूर्णांक के रूप में एन्कोड किए गए कच्चे पते की अपेक्षा करते हैं (जिसका आकार मूल सूचक चौड़ाई के बराबर है)।
समारोह प्रोटोटाइप 'intptr_t' या' int64_t' का उपयोग कर सकते हैं, लेकिन वह 'c_char_p' ctypes में उपयोग करने से रोक नहीं करता है। एक 'char * 'सूचक एक पूर्णांक पते के रूप में पारित किया जाता है। – eryksun
निश्चित रूप से, लेकिन मेरे लिए उपयोग का मामला थोड़ा अलग है: मैं जिंगिंग कोड हूं और पते को एक इंटरमीडिएट पायथन फ़ंक्शन में पास करने की आवश्यकता है जो पूर्णांक की अपेक्षा करता है, जो तब एक सी फ़ंक्शन में कॉल को इकट्ठा करता है। मैं इसका उल्लेख करने में असफल रहा। – csl