में कनवर्ट करें मैं सॉकेट से बाइट सरणी/सूची में पढ़ रहा हूं। मैं पाइथन को पहले बाइट को "हस्ताक्षरित 8 बिट पूर्णांक" के रूप में मानना चाहता हूं। एक एकीकृत 8 बिट पूर्णांक के रूप में इसके पूर्णांक मान को कैसे प्राप्त करना संभव है?पाइथन बाइट को "हस्ताक्षरित 8 बिट पूर्णांक"
उत्तर
struct मॉड्यूल का उपयोग करें।
import struct
value = struct.unpack('B', data[0])[0]
ध्यान दें कि हमेशा खोल एक टपल देता है, भले ही आप केवल एक आइटम खोल रहे हैं।
इसके अलावा, this SO question पर एक नज़र डालें।
क्या आप दिखा सकते हैं कि कैसे? – bbb
तो struct.unpack ('B', डेटा [0]) में संग्रहीत क्या है [1]? – bbb
डेटा [0] आपको प्राप्त करने वाला पहला बाइट है। अनपैक ("बी", डेटा [0]) बाइट को 8-बिट हस्ताक्षरित पूर्णांक (जिसे सी में हस्ताक्षरित चार के रूप में जाना जाता है) के रूप में माना जाता है और उस पूर्णांक वाले टुपल को लौटाता है (क्या आपने अनपॅक करने के लिए दो बाइट पास किए थे, तो आप अनपॅक की तरह कुछ करेंगे ("बीबी", डेटा [0: 2]) और 2-टुपल वापस प्राप्त करें)। अंतिम [0] ट्यूपल में पहली (और केवल) वस्तु प्राप्त करता है। – codeape
बाइट्स/बाइटियर्रे पूर्णांक का अनुक्रम है। तुम सिर्फ अपने सूचकांक से एक तत्व तक पहुंचते हैं तो आप एक पूर्णांक होगा:
>>> b'abc'
b'abc'
>>> _[0]
97
उनके बहुत परिभाषा के अनुसार, बाइट्स और bytearrays range(0, 256)
में पूर्णांक होते हैं। तो वे "अप्रमाणित 8-बिट पूर्णांक" हैं।
उदाहरण के लिए, मैं अपने सर्वर साइड कोड में इस राशि डेटा = conn.recv (1000000) रूप में लंबे समय के रूप में मैं मैं समझता हूँ बाइट प्राप्त करें ... इसलिए मैं डेटा [0] को "हस्ताक्षरित 8 बिट पूर्णांक" के रूप में माना जाना चाहता हूं। यह कैसे संभव है? – bbb
यह केवल पायथन 3.x में काम करता है। पायथन 2.6 में b'string literal 'वाक्यविन्यास है, लेकिन यह केवल str के लिए एक उपनाम है, और पुराने संस्करण आपको एक सिंटेक्स त्रुटि प्रदान करेंगे। – musicinmybrain
@musicinmybrain: यही कारण है कि इस प्रश्न को 'पायथन-3.x' के रूप में टैग किया गया है, मुझे लगता है कि – SilentGhost
एक और बहुत ही उचित और सरल विकल्प है, अगर आप सिर्फ पहली बाइट के पूर्णांक मान की जरूरत है, निम्नलिखित की तरह कुछ होगा:
value = ord(data[0])
आप एक साथ अपने प्राप्त डेटा के सभी तत्वों के खोल चाहते हैं (और वे केवल एक सजातीय सरणी नहीं हैं), या यदि आप 32-बिट पूर्णांक जैसे मल्टीबाइट ऑब्जेक्ट्स से निपट रहे हैं, तो आपको स्ट्रक्चर मॉड्यूल की तरह कुछ उपयोग करने की आवश्यकता होगी।
- 1. बिट बाइट 8 बाइट्स
- 2. 32-बिट हस्ताक्षरित पूर्णांक (बड़े एंडियन) को लंबे और पीछे
- 3. एक हस्ताक्षरित और हस्ताक्षरित 32-बिट पूर्णांक चर
- 4. एक हस्ताक्षरित पूर्णांक
- 5. हस्ताक्षरित वर्णों को हस्ताक्षरित पूर्णांक
- 6. चार हस्ताक्षरित पूर्णांक (सी ++)
- 7. 64-बिट डेटा मॉडल पर 64-बिट हस्ताक्षरित पूर्णांक अक्षरों को निर्दिष्ट करना
- 8. 32 बिट पूर्णांक पर 32 बिट फ्लोट को मानचित्र करें
- 9. मैं हेक्स स्ट्रिंग को हस्ताक्षरित पूर्णांक में कैसे परिवर्तित करूं?
- 10. मैं एक पाइथन टुपल (बाइट सरणी) के एक पूर्णांक
- 11. बाइट [] को बिना हस्ताक्षरित लघु जावा
- 12. क्यूडा पर 128 बिट पूर्णांक?
- 13. सी पूर्णांक की nth बाइट प्राप्त करें
- 14. 8 बिट ऑडियो नमूने 16 बिट
- 15. 8 बाइट EVP_DecryptFinal
- 16. यूटीएफ -8 निरंतर बाइट
- 17. ईडीएसएसी - 17-बिट और 35-बिट पूर्णांक
- 18. बिट हैक - 8
- 19. कंप्यूटर पूर्णांक में अंतर कैसे हस्ताक्षरित या हस्ताक्षरित है?
- 20. पाइथन
- 21. 8-बिट सिस्टम
- 22. 32 बिट बनाम 64 बिट
- 23. 64-बिट वातावरण में 32-बिट पूर्णांक का प्रदर्शन (सी ++)
- 24. हस्ताक्षरित पूर्णांक को एक हस्ताक्षरित लंबे समय में परिवर्तित करने का सबसे अच्छा तरीका?
- 25. क्या हम पहले बिट को बाइट बिट 1 या 0 में कॉल करते हैं?
- 26. स्टार्ट बिट बनाम स्टार्ट बाइट
- 27. पाइथन का उपयोग कर 24 बिट और थोड़ा एंडियन फ़ाइल वाली पूर्णांक को कैसे पढ़ा जाए?
- 28. क्या होता है जब मैं C++ में एक हस्ताक्षरित पूर्णांक से एक हस्ताक्षरित पूर्णांक घटाता हूं?
- 29. 1 बाइट पूर्णांक डेटा प्रकार
- 30. नकारात्मक पूर्णांक की जांच का उपयोग कर बिट संचालन
यदि आप 'numpy' पर निर्भरता लेने के इच्छुक हैं, तो उनके कुछ कार्य एक' dtype' arg लेते हैं, जिसे आप 'numpy.uint8' पर सेट कर सकते हैं। उदाहरण: 'bytestream = numpy.fromfile (infile, dtype = numpy.uint8)' – CrazyPyro