


Bagaimana untuk membaca data binari dalam Python?
bait
bait: Sejenis jujukan aksara. Dengan membandingkan dir(str) dan dir(bait), kita dapat melihat bahawa sifat dan kaedah kedua-duanya adalah sangat serupa, dengan hanya sedikit perbezaan. Oleh itu, bait juga boleh mempunyai pelbagai kaedah operasi pada jujukan bait seperti rentetan, seperti carian (cari), panjang (len), pemotongan (split), penghirisan, dll.
Kelebihan bait ialah: Kaedah terbina dalam Python, tidak perlu memasang modul pihak ketiga tambahan.
Tetapi kelemahannya juga jelas: ia hanya boleh menanyakan satu pertanyaan dan tidak boleh menanyakan berbilang hasil yang diperlukan pada satu masa.
Mula-mula buka fail melalui mod rb buka dan baca kandungan sebagai jenis bait. Terdapat kaedah find() untuk mencari rentetan tertentu, tetapi kaedah ini hanya boleh mencari indeks rentetan pertama yang memenuhi keperluan, dan ia tidak memberikan indeks bit tunggal, tetapi indeks satu bait 8-bit. Apabila anda perlu mencari berbilang rentetan padanan, tiada kaedah findall() terbina dalam. Jika anda ingin bertanya berbilang, prosesnya akan menyusahkan Mula-mula cari indeks padanan pertama 1, mulakan dengan indeks 1 ini, tanya indeks padanan kedua 2, dan seterusnya sehingga akhir pertanyaan.
with open(path, 'rb') as f: datas = f.read() start_char = datas.find(b'Start') # start_char2 = datas.find(b'Start', start_char) end_char = datas.find(b'End', start_char) # end_char2 = datas.find(b'End', start_char2) data = datas[start_char:end_char] print(data)
Perhatikan bahawa dalam kod di atas, start_char dan end_char akan muncul beberapa kali, dan masanya tidak semestinya sama Ia adalah perlu untuk mendapatkan kandungan antara kedua-dua indeks, tetapi ia tidak boleh digelung atau pun dicari sekali gus. Baris kod yang dikomen perlu dilaksanakan beberapa kali untuk mendapatkan indeks kata kunci. Memandangkan kami tidak tahu berapa banyak bendera permulaan yang akan ada dalam data fail, kami tidak tahu berapa kali ia akan dilaksanakan Ini harus diselesaikan dengan menggelung, tetapi nampaknya tiada pembolehubah untuk gelung. Ini menjadikan masalah lebih kompleks.
Kedua, memandangkan kandungan antara dua markah diperolehi, proses di atas perlu dilakukan dua kali. Oleh itu, prosesnya lebih rumit.
Oleh itu, adalah perlu untuk mencari kaedah baru.
bitstring
bitstring ialah pakej tiga pihak yang membaca fail binari dalam bentuk strim bait.
Ayat pertama fail bitstring.py ialah: Pakej ini mentakrifkan kelas yang memudahkan penciptaan, manipulasi dan tafsiran data secara bit demi bit, manipulasi dan tafsiran data.
Pemahaman mudah ialah mengendalikan data jenis bait secara langsung.
mempunyai empat kategori utama, seperti berikut:
Bit -- Bekas tidak boleh ubah untuk data binari.BitArray -- Bekas boleh ubah untuk data binari.ConstBitStream -- Bekas tidak boleh ubah dengan kaedah penstriman.
BitStream -- Bekas boleh ubah dengan kaedah penstriman.
BitStream -- Bekas boleh ubah dengan kaedah penstriman.
BitArray -- bekas data binari yang boleh berubah.
ConstBitStream -- Bekas tidak boleh ubah dengan kaedah aliran.
Seperti bait, mula-mula baca kandungan fail, cari indeks kata kunci, dan potong untuk mendapatkan kandungan data.
# update at 2022/05/06 start # from bistring import ConstBitStream, BitStream from bitstring import ConstBitStream, BitStream # update at 2022/05/06 end hex_datas = ConstBitStream(filename=path) # 读取文件内容 start_char = b'Start' start_chars = hex_datas.findall(start_char, bytealigned=True) # 一次找到全部符合的,返回一个生成器 start_indexs = [] for start_char in start_chars: start_indexs.append(start_char) end_char = b'End' end_indexs = [] for start_index in start_indexs: end_chars = hex_datas.find(end_char, start=start_index, bytealigned=True) # 找到第一个符合的,返回元组 for end_char in end_chars: end_indexs.append(end_char) result = [] for i in range(min(len(start_indexs), len(end_indexs))): hex_data = hex_datas[start_indexs[i]:end_indexs[i]] str_data = BitStream.tobytes(hex_data).decode('utf-8') result.append(str_data)Salin selepas log masuk
Analisis kod, mula-mula import dua kelas yang diperlukan: ConstBitStream, BitStream. Untuk mendapatkan kandungan fail, findall() mencari semua indeks rentetan yang sepadan dan find() mencari indeks rentetan yang sepadan yang pertama. Ambil nilai yang lebih kecil daripada dua senarai permulaan dan akhir, dan potong untuk mendapatkan data Jenisnya ialah "bitstring.ConstBitStream() kaedah menukarnya kepada jenis bait, jadi gunakan decode() untuk menyahkod dan mendapatkan rentetan yang diperlukan.
Seluruh proses adalah mudah dan berterusan. Kaedah findall(), find(), dan tobytes() digunakan dalam kod. Di samping itu, terdapat banyak butiran kecil yang perlu diberi perhatian Sebagai contoh, jika start_indexs kosong, kod berikutnya tidak boleh dilaksanakan, dan perkara yang sama berlaku untuk end_indexs jika ia kosong.Dapat dilihat bahawa pakej bitstring agak mudah digunakan. Mengikut keperluan, agak sedikit kaedah yang digunakan sebenarnya, terdapat banyak kaedah lain, pilih mengikut keperluan.
Atas ialah kandungan terperinci Bagaimana untuk membaca data binari dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.
