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

DDD
Lepaskan: 2024-11-28 03:21:17
asal
156 orang telah melayarinya

How to Efficiently Unpack Integer Fields from a Byte Buffer in Go?

Membongkar Medan Integer dalam Penampan Bait (Golang)

Dalam senario yang memerlukan pengekstrakan medan tertentu daripada penimbal bait, pembangun kerap menghadapi cabaran dengan cekap dan tepat mencapai ini. Untuk menangani perkara ini, mari kita terokai penyelesaian sedia ada dan pertimbangkan pendekatan alternatif.

Penyelesaian Sedia Ada

Penyelesaian yang disediakan melibatkan mencipta bait.Penimbal untuk setiap medan dan kemudian menggunakan binari.Baca untuk mengisi yang dikehendaki padang. Walaupun berfungsi, pendekatan ini boleh dipertingkatkan dari segi kecekapan dan kependekan kod.

Pendekatan Diperbaiki Menggunakan Next()

Untuk meningkatkan penyelesaian sedia ada, kami boleh memanfaatkan kaedah .Next() bagi bait.Penimbal untuk melangkau bait yang tidak diingini. Ini menghapuskan keperluan untuk mencipta berbilang penimbal dan membolehkan kod yang lebih ringkas.

p := bytes.NewBuffer(buf)

// Skip [8:20)
p.Next(12)

// 20: uint32
binary.Read(p, binary.LittleEndian, &fs.sb.firstDataBlock)
Salin selepas log masuk

Menggunakan Struktur Pengepala

Pendekatan alternatif ialah mentakrifkan struktur pengepala yang mewakili pelbagai medan, kemudian baca struktur terus menggunakan binari.Baca. Ini memerlukan penciptaan struktur tersuai, tetapi ia menyediakan penyelesaian yang lebih cekap dan boleh diselenggara.

type Head struct {
    InodeCount      uint32
    BlockCount      uint32
    FirstBlock      uint32
    BlockSize       uint32
    BlocksPerGroup  uint32
    InodesPerBlock  uint32
}

func main() {
    var header Head

    err = binary.Read(file, binary.LittleEndian, &header)

    if err != nil {
        log.Fatal(err)
    }

    log.Printf("%#v\n", header)
}
Salin selepas log masuk

Kesimpulan

Pendekatan yang lebih baik menggunakan .Next() menyediakan penyelesaian yang lebih optimum yang memerlukan lebih sedikit peruntukan dan pengulangan kod. Pendekatan struktur pengepala menawarkan perspektif yang berbeza dan boleh berguna apabila berurusan dengan struktur data yang lebih besar atau lebih kompleks.

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