Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar rentetan bait kepada integer dalam Python?

Bagaimana untuk menukar rentetan bait kepada integer dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-26 13:13:03994semak imbas

How to convert a string of bytes to an integer in Python?

Menukar Rentetan Bait kepada Integer dalam Python

Satu tugas biasa apabila bekerja dengan data dalam Python ialah keperluan untuk menukar rentetan bait kepada integer. Ini boleh dilakukan dalam beberapa cara, bergantung pada versi Python dan keperluan khusus.

Menggunakan int.from_bytes() (Python 3.2 )

Dalam Python 3.2 dan lebih baru, kaedah yang disyorkan untuk menukar rentetan bait kepada integer ialah fungsi int.from_bytes(). Fungsi ini mengambil dua hujah:

  1. Rentetan bait untuk ditukar.
  2. Endian rentetan bait, yang boleh sama ada 'besar' atau 'kecil'.

Sebagai contoh, untuk menukar rentetan bait 'yxccxa6xbb' kepada integer dalam susunan big-endian, anda akan menggunakan kod berikut:

<code class="python">int.from_bytes(b'y\xcc\xa6\xbb', byteorder='big')</code>

Ini akan mengembalikan nilai integer 2043455163.

Untuk menukar rentetan bait yang sama kepada integer dalam susunan little-endian, anda akan menggunakan kod berikut:

<code class="python">int.from_bytes(b'y\xcc\xa6\xbb', byteorder='little')</code>

Ini akan mengembalikan nilai integer 3148270713.

Menggunakan Modul struct

Kaedah lain untuk menukar rentetan bait kepada integer ialah menggunakan modul struct. Modul struct menyediakan beberapa fungsi untuk membungkus dan membongkar data dalam format yang berbeza. Untuk menukar rentetan bait kepada integer menggunakan modul struct, anda akan menggunakan kod berikut:

<code class="python">import struct

int_value = struct.unpack('>L', b'y\xcc\xa6\xbb')[0]</code>

Argumen '>L' menentukan bahawa rentetan bait harus ditafsirkan sebagai little-endian , integer 32-bit tidak ditandatangani.

Menggunakan Fungsi Tersuai

Jika anda memerlukan lebih kawalan ke atas proses penukaran, anda juga boleh menulis fungsi tersuai anda sendiri untuk menukar rentetan bait kepada integer . Berikut ialah contoh fungsi tersuai yang menukar rentetan bait kepada integer dalam susunan big-endian:

<code class="python">def bytes_to_int(bytestring):
    """Convert a string of bytes to an integer."""

    value = 0
    for byte in bytestring:
        value <<= 8
        value |= byte

    return value</code>

Fungsi ini berfungsi dengan melelakan rentetan bait dan mengalihkan nilai semasa sebanyak 8 bit ke kiri untuk setiap bait. Nilai bait kemudiannya ditambahkan pada nilai semasa, menghasilkan nilai integer akhir.

Mana-mana kaedah yang anda pilih, menukar rentetan bait kepada integer dalam Python ialah proses yang mudah. Dengan memahami pilihan berbeza yang tersedia, anda boleh memilih kaedah yang paling sesuai dengan keperluan anda.

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

Kenyataan:
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