gelernt Nur 3 Python in 7 Tagen, und ich habe das Gefühl, dass ein bisschen ein Loch da ist. In Python 3 nehme ich an, dass ich eine Byte-Zeichenfolge b'1234'
habe. Sein Iterator gibt ganze Zahlen:Python 3 bytes.index: besserer Weg? in meinem Verständnis von Bytefolgen
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'>
I eine ganze Zahl im Bytestring finden (die Definition von in
ist, dass es für die Gleichstellung sucht):
>>> 0x32 in b'1234'
True
aber ich mag den Index finden einer gegebenen Ganzzahl in der Byte-Zeichenfolge. bytes.index
erfordert einen Teil:
>>> b'1234'.index(b'2')
1
Nun, wenn ich eine Variable x
habe, dass wir finden wollen, ist dies das Beste, was ich habe kommen mit:
>>> x = 0x32
>>> b'1234'.index(bytes([x]))
1
Ich weiß, Python ist eleganter als die. Ich vermisse eindeutig etwas Offensichtliches. Irgendwelche Ideen für einen einfacheren Weg, dies zu tun, als eine Sequenz einer einzelnen ganzen Zahl zu erzeugen? Oder ist es das wirklich?
Die Frage hinter auch ist, warum wollen Sie den Index des Bytes zu finden? – pepr
Wenn Sie wissen müssen :) Es ist Teil einer virtuellen Maschine ist, von deren Anweisungen muss den Index eines Byte gefunden. Es implementiert Version 3 der Z-machine-Spezifikation, die zum Spielen von Zork und anderen Textabenteuern verwendet wird, die auf dieser Engine basieren. Wenn Sie es ausprobieren möchten, finden Sie es unter http://code.google.com/p/pymachine. Es ist meine erste Anstrengung, also werden Punkte für Verbesserungen geschätzt. –