Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membongkar Integer dengan Cekap daripada Penampan Byte dalam Go?

Bagaimana untuk Membongkar Integer dengan Cekap daripada Penampan Byte dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-01 10:40:14276semak imbas

How to Efficiently Unpack Integers from a Byte Buffer in Go?

Cara Membongkar Integer daripada Penampan Bait Dengan Berkesan di Golang

Di Golang, apabila mengendalikan penimbal bait, selalunya perlu untuk mengekstrak pelbagai jenis integer dengan cekap. Artikel ini menggariskan dua pendekatan yang berkesan membongkar pelbagai jenis integer daripada penimbal bait sambil mematuhi keperluan khusus: mengekalkan offset eksplisit dan membaca terus daripada penimbal bait.

Pendekatan 1: Menggunakan .Next() untuk Langkau Bait Yang Tidak Diingini

Satu pendekatan melibatkan mencipta penimbal baharu setiap kali anda mahu membaca integer. Untuk mengelakkan overhed ini, anda boleh menggunakan kaedah .Next() untuk melangkau bait yang anda tidak mahu baca. Contohnya:

buf := make([]byte, 1024)
// ...

p := bytes.NewBuffer(buf)
// Read the first integer
binary.Read(p, binary.LittleEndian, &inodeCount)

// Skip unwanted bytes
p.Next(12)

// Read the next integer
binary.Read(p, binary.LittleEndian, &firstDataBlock)
// ...

Pendekatan 2: Menggunakan Struktur Pengepala

Pendekatan alternatif ialah mencipta struktur pengepala yang sepadan dengan format penimbal bait. Ini membolehkan anda membaca keseluruhan pengepala secara terus menggunakan binary.Read(). Contohnya:

type Header struct {
    InodeCount      uint32
    BlockCount      uint32
    // ...
}

buf := make([]byte, 1024)
// ...

var header Header
err := binary.Read(bytes.NewBuffer(buf), binary.LittleEndian, &header)
if err != nil {
    // ...
}

fmt.Printf("%#v", header)

Kesimpulan

Kedua-dua pendekatan membenarkan pembongkaran integer yang cekap daripada penimbal bait sambil memenuhi keperluan offset eksplisit dan membaca terus daripada penimbal . Pilihan antara mereka bergantung pada keperluan khusus dan ciri prestasi aplikasi anda.

Atas ialah kandungan terperinci Bagaimana untuk Membongkar Integer dengan Cekap daripada Penampan Byte dalam Go?. 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