[解決済み] バイト列をint型に変換するには?
2022-04-24 15:15:30
質問内容
Pythonでバイト列をint型に変換するにはどうしたらいいですか?
このように言ってください。
'y\xcc\xa6\xbb'
賢い・バカな方法を思いついた。
sum(ord(c) << (i * 8) for i, c in enumerate('y\xcc\xa6\xbb'[::-1]))
もっと簡単にできるビルトインや標準ライブラリがあるはずなんですが......。
とは異なります。 16進数の文字列を変換する の場合は、int(xxx, 16)を使うことができますが、その代わりに、実際のバイト値の文字列を変換したいのです。
UPDATEしてください。
他のモジュールをインポートする必要がないので、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 struct\nstruct.unpack(">L", "y\xcc\xa6\xbb")[0]""").timeit()
0.98822188377380371
モジュールをインポートするコストを含めると、この方法が持っている利点のほとんどすべてが否定されます。私は、これはベンチマーク実行全体に対して一度だけインポートする費用を含むと考えています。毎回強制的にリロードするとどうなるか見てください。
>>> Timer("""reload(struct)\nstruct.unpack(">L", "y\xcc\xa6\xbb")[0]""", 'import struct').timeit()
68.474128007888794
言うまでもなく、1回のインポートでこのメソッドを大量に実行するのであれば、この問題は比例して小さくなります。また、CPUというよりi/oコストでしょうから、特定のマシンの容量や負荷特性に依存するかもしれません。
解決方法は?
を使用することもできます。 構造体 モジュールで行うことができます。
>>> struct.unpack("<L", "y\xcc\xa6\xbb")[0]
3148270713L
関連
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] C++でintをstringに変換する最も簡単な方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
pythonを使ったオフィス自動化コード例
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] データ型が理解できない
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] バイトをintに変換しますか?
-
[解決済み] Pythonで16進文字列をintに変換する