バイト文字列をintに変換する方法は?
Pythonでバイト文字列をintに変換するにはどうすればよいですか? このように言います: 'y\xcc\xa6\xbb' 私はそれを行うための賢い/愚かな方法を思いつきました: sum(ord(c) << (i * 8) for i, c in enumerate('y\xcc\xa6\xbb'[::-1])) 私はこれをより簡単に行う組み込みまたは標準ライブラリにある必要があることを知っています... これは、int(xxx、16)を使用できる16進数の文字列の変換とは異なりますが、実際のバイト値の文字列を変換したいと思います。 更新: 別のモジュールをインポートする必要がないので、Jamesの答えが少し良いのが好きですが、Gregの方法はより高速です。 >>> from timeit import Timer >>> Timer('struct.unpack("<L", "y\xcc\xa6\xbb")[0]', 'import struct').timeit() 0.36242198944091797 >>> Timer("int('y\xcc\xa6\xbb'.encode('hex'), 16)").timeit() 1.1432669162750244 私のハッキーな方法: >>> Timer("sum(ord(c) << (i * 8) for i, c in enumerate('y\xcc\xa6\xbb'[::-1]))").timeit() 2.8819329738616943 さらに更新: 誰かがコメントで別のモジュールのインポートの問題を尋ねました。まあ、モジュールのインポートは必ずしも安くはありません、見てください: >>> Timer("""import …