Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menukar Rentetan Byte kepada Integer dalam Python: Kaedah Mana Yang Terbaik?
Cara Menukar Rentetan Byte kepada Integer dalam Python
Menukar rentetan bait kepada integer dalam Python boleh dicapai menggunakan pelbagai kaedah, sesetengah daripadanya menawarkan prestasi yang lebih baik daripada yang lain.
Fungsi Terbina dalam: int.from_bytes()
Dalam Python versi 3.2 dan ke atas, anda boleh menukar terus rentetan bait kepada integer menggunakan fungsi int.from_bytes():
<code class="python">my_int = int.from_bytes(b'y\xcc\xa6\xbb', byteorder='big')</code>
Di sini, byteorder boleh sama ada 'besar' atau 'sedikit' untuk menentukan endian rentetan bait. Big-endian bermaksud bait paling ketara disimpan dahulu, manakala little-endian bermakna bait paling kurang ketara disimpan dahulu.
Menggunakan Perwakilan Perduaan
Pendekatan lain ialah dengan tukar rentetan bait kepada perwakilan binarinya dan kemudian gunakan fungsi int():
<code class="python">my_int = int(''.join(format(byte, '08b') for byte in b'y\xcc\xa6\xbb'[::-1]), 2)</code>
Kaedah ini lebih perlahan daripada int.from_bytes(), tetapi ia boleh berguna jika anda perlu bekerja dengan data binari terus.
Fungsi Tersuai
Anda juga boleh mencipta fungsi tersuai anda sendiri untuk menukar rentetan bait kepada integer:
<code class="python">def convert_bytes_to_int(byte_string, endianness='big'): if endianness == 'big': return sum(ord(c) << (i * 8) for i, c in enumerate(byte_string)) else: return sum(ord(c) << (len(byte_string) - i - 1) * 8 for i, c in enumerate(byte_string))</code>
Perbandingan Prestasi
Prestasi kaedah berbeza ini boleh berbeza-beza bergantung pada panjang dan endian rentetan bait. Secara amnya, int.from_bytes() ialah kaedah terpantas, diikuti dengan kaedah perwakilan binari dan kemudian fungsi tersuai.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan Byte kepada Integer dalam Python: Kaedah Mana Yang Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!