2011-06-03 16 views
7
  1. एक API एक 64 बिट प्रकार अपेक्षा करता है कि में सत्यापित किया जा रहा ctypes प्रकार परिशुद्धता, मैं कैसे जांच कर सकते हैं एक ctypes प्रकार है कि यह है कि कई बिट्स अगर sizeof रिटर्न बाइट की संख्या?
  2. मुझे कैसे पता चलेगा कि वर्तमान प्लेटफॉर्म पर प्रत्येक बाइट में कितने बिट हैं?
  3. पाइथन में परिभाषित CHAR_BIT कहां है?
+0

एक बाइट हमेशा 8 बिट्स नहीं है? – tMC

+2

नहीं, एक * ऑक्टेट * 8 बिट्स है। संयोग से, आजकल अधिकांश बाइट एक ऑक्टेट चौड़ा हैं। :) –

उत्तर

6

सी/सी ++ फ़ंक्शन हस्ताक्षर सी/सी ++ प्रकारों जैसे "int" या "डबल" या "uint32_t" के साथ लिखे गए हैं। इन सभी में समान ctypes समकक्ष हैं, इसलिए आमतौर पर आपको बिट्स की संख्या की परवाह नहीं है।

कहा ...

import os 
print os.sysconf('SC_CHAR_BIT') 

... के बारे में के रूप में पास के रूप में आप मिल जाएगा है, मुझे लगता है। गैर-यूनिक्स प्लेटफॉर्म पर काम नहीं करता है। और जैसा कि टीएमसी टिप्पणियों में बताता है, यह सभी यूनिक्स प्लेटफार्मों पर भी काम नहीं करता है; मेरा मानना ​​है कि यह एक जीएनयू विस्तार है।

[अद्यतन]

वास्तव में, POSIX spec किसी भी प्रणाली SC_CHAR_BIT sysconf चयनकर्ता का समर्थन करता है कि पर CHAR_BIT == 8. जनादेश को तो दिखाई देता है, तो आप वास्तव में इसकी आवश्यकता नहीं है :-)।

+2

FWIW- शामिल पायथन 2.6 पर ओएसएक्स 10.7 पर; वह conf मौजूद नहीं है। 'os.sysconf ('SC_CHAR_BIT')' - 'ValueError: अपरिचित कॉन्फ़िगरेशन नाम' – tMC

+0

व्हाउप्सि। ऐसा लगता है कि यह एक जीएनयू एक्सटेंशन हो सकता है ... धन्यवाद। – Nemo