Bagaimanakah saya menukar rentetan bait kepada integer dalam Python?

DDD
Lepaskan: 2024-10-27 08:43:30
asal
549 orang telah melayarinya

How do I convert byte strings to integers in Python?

Menukar Rentetan Byte kepada Integer dalam Python

Apabila berurusan dengan jujukan bait dalam Python, mungkin perlu menukarnya kepada yang sepadan perwakilan integer. Tugasan ini boleh dicapai menggunakan pelbagai teknik, masing-masing mempunyai kelebihan dan kelemahannya sendiri.

Menyesuaikan Penukaran dengan Manipulasi Rentetan

Satu pendekatan ialah mengulang secara manual ke atas bait jujukan, menukar setiap bait kepada nilai berangkanya dan menggabungkannya dengan sewajarnya. Kaedah ini memberikan fleksibiliti dalam mengurus endian (urutan bait dalam integer berbilang bait). Contohnya:

<code class="python">def bytes_to_int(bytestr):
  """Converts a string of bytes into an integer."""
  result = 0
  for i, byte in enumerate(bytestr[::-1]):
    result += ord(byte) << (i * 8)
  return result
Salin selepas log masuk

Menggunakan Fungsi Terbina dalam untuk Penukaran Heksadesimal

Sebagai alternatif, jika jujukan bait mewakili nombor perenambelasan, anda boleh menukarnya terus kepada integer menggunakan int(xxx, 16). Kaedah ini menganggap rentetan bait yang diberikan adalah dalam format perenambelasan.

Memanfaatkan Modul struct untuk Data Berstruktur

Modul struct menyediakan penyelesaian yang lebih komprehensif untuk mengendalikan data binari. Ia boleh digunakan untuk menukar jujukan bait kepada integer berdasarkan format tertentu, seperti pesanan bait big-endian atau little-endian.

<code class="python">import struct

def bytes_to_int_with_struct(bytestr, byteorder):
  """Converts a string of bytes into an integer using the `struct` module."""
  return struct.unpack(f"<L" if byteorder == 'little' else ">L", bytestr)[0]</code>
Salin selepas log masuk

Memilih Pendekatan Optimum

Kaedah penukaran terbaik bergantung pada keperluan khusus projek anda. Menyesuaikan penukaran melalui manipulasi rentetan menawarkan paling banyak kawalan ke atas endian, tetapi ia boleh menjadi lebih perlahan daripada menggunakan fungsi terbina dalam atau modul struktur. Jika prestasi adalah kebimbangan utama, int.from_bytes() yang diperkenalkan dalam Python 3.2 atau struct.unpack() adalah pilihan yang lebih cekap.

Walau bagaimanapun, jika anda perlu mengendalikan pesanan bait yang berbeza-beza atau memastikan tingkah laku bebas platform, fleksibiliti modul struct menjadikannya pilihan yang sesuai.

Atas ialah kandungan terperinci Bagaimanakah saya menukar rentetan bait kepada integer dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!