बस 7 दिनों में पाइथन 3 सीखा, और मुझे यह महसूस हो रहा है कि बाइट तारों की मेरी समझ में एक छेद है। पायथन 3 में, मान लीजिए कि मेरे पास बाइट स्ट्रिंग b'1234'
है। इसके इटरेटर पूर्णांक रिटर्न:पायथन 3 बाइट्स.इंडेक्स: बेहतर तरीका?
Python 3.2.3 (default, May 26 2012, 18:49:27)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> for z in b'1234':
... print(type(z))
...
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
मैं बाइट स्ट्रिंग में एक पूर्णांक प्राप्त कर सकते हैं (in
की परिभाषा है कि यह समानता के लिए खोज करता है):
>>> 0x32 in b'1234'
True
हालांकि, मैं सूचकांक प्राप्त करना चाहते हैं बाइट स्ट्रिंग में दिए गए पूर्णांक का।
>>> b'1234'.index(b'2')
1
अब, अगर मैं एक चर x
है कि मैं खोजना चाहते हैं, यह सबसे अच्छा मैं के साथ आ गया है: bytes.index
सबस्ट्रिंग की आवश्यकता है
>>> x = 0x32
>>> b'1234'.index(bytes([x]))
1
मैं जानता हूँ कि अजगर और अधिक सुरुचिपूर्ण है उससे। मैं स्पष्ट रूप से कुछ स्पष्ट याद कर रहा हूँ। एक एकल पूर्णांक के अनुक्रम बनाने के अलावा ऐसा करने के लिए एक आसान तरीका के रूप में कोई विचार? या वह वास्तव में है?
पीछे सवाल भी है, आप बाइट की अनुक्रमणिका क्यों खोजना चाहते हैं? – pepr
यदि आपको पता होना चाहिए :) यह वर्चुअल मशीन का हिस्सा है, जिसके निर्देशों में से एक को बाइट की अनुक्रमणिका की आवश्यकता है। यह ज़ेड-मशीन स्पेक के संस्करण 3 को लागू करता है, जो उस इंजन के आधार पर ज़ोर और अन्य टेक्स्ट एडवेंचर्स खेलने के लिए उपयोग किया जाता है। यदि आप इसे देखना चाहते हैं, तो यह http://code.google.com/p/pyzmachine पर है। यह मेरा पहला प्रयास है, इसलिए सुधार के लिए अंक की सराहना की जाती है। –