Python 3を7日間で学んだことがあります。バイト文字列の理解にはちょっとした穴があるような気がします。 Python 3では、バイト文字列b'1234'
があるとします。そのイテレータは、整数を返します。Python 3 bytes.index:より良い方法ですか?
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
をしかし、私はインデックスを見つけたいですバイト文字列中の与えられた整数の値。私はPythonは、よりエレガントである知っている
>>> x = 0x32
>>> b'1234'.index(bytes([x]))
1
:私は、私が見つけたい、その変数x
を持っている場合、これは私が作ってみた最高です、今
>>> b'1234'.index(b'2')
1
:bytes.index
は、サブストリングを必要としそれよりも。私は明らかに何かを明らかに欠いている。単一の整数のシーケンスを作成する以外の簡単な方法は?それとも本当ですか?
さらに、なぜバイトのインデックスを探したいのですか? – pepr
あなたが知っている必要がある場合:)仮想マシンの一部です。命令の1つに、見つかったバイトのインデックスが必要です。そのエンジンに基づいてZorkや他のテキストの冒険をするために使用されるZ-machine仕様のバージョン3を実装しています。チェックアウトしたい場合は、http://code.google.com/p/pyzmachineにあります。それは私の最初の努力なので、改善のポイントは高く評価されます。 –