Po prostu nauczyłem się Pythona 3 w 7 dni, i mam wrażenie, że jest trochę dziury w moim rozumieniu ciągów bajtowych. W Pythonie 3 załóżmy, że mam ciąg bajtowy b'1234'
. Jego iterator zwraca liczby całkowite:Python 3 bajty.indeks: lepszy sposób?
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'>
mogę znaleźć liczbę całkowitą w ciąg bajtów (definicja in
jest to, że szuka równości):
>>> 0x32 in b'1234'
True
Jednak chciałbym znaleźć indeks danej liczby całkowitej w ciągu bajtów. bytes.index
wymaga podciąg:
>>> b'1234'.index(b'2')
1
Teraz, jeśli mam zmienną x
że chcę znaleźć, jest to najlepszy jaki wymyślić:
>>> x = 0x32
>>> b'1234'.index(bytes([x]))
1
wiem Python jest bardziej elegancki niż to. Wyraźnie brakuje mi czegoś oczywistego. Wszelkie pomysły na prostszy sposób zrobić to poza tworzeniem sekwencji pojedynczej liczby całkowitej? Czy to naprawdę to?
Pytanie również brzmi: dlaczego chcesz znaleźć indeks bajtu? – pepr
Jeśli musisz wiedzieć :) Jest to część wirtualnej maszyny, której instrukcja wymaga znalezionego indeksu bajta. Wprowadza wersję 3 specyfikacji Z-machine, używanej do grania Zork i innych tekstowych przygód opartych na tym silniku. Jeśli chcesz to sprawdzić, odwiedź http://code.google.com/p/pyzmachine. To mój pierwszy wysiłek, dlatego docenia się punkty, które należy ulepszyć. –