Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengeluarkan Nilai Integer dengan Cekap daripada Penampan Bait dalam Go?

Bagaimanakah Saya Boleh Mengeluarkan Nilai Integer dengan Cekap daripada Penampan Bait dalam Go?

Linda Hamilton
Lepaskan: 2024-11-27 19:32:11
asal
285 orang telah melayarinya

How Can I Efficiently Extract Integer Values from a Byte Buffer in Go?

Mengekstrak Nilai Integer daripada Penampan Byte di Golang

Anda memerlukan teknik untuk mengekstrak pelbagai medan daripada penimbal bait dalam Go. Walaupun pendekatan semasa anda menggunakan bait.Penimbal dan ofset eksplisit berjaya mencapai matlamat ini, terdapat potensi penambahbaikan untuk dipertimbangkan.

Alternatif dengan Melangkau Bait

Untuk menghapuskan penciptaan berbilang buffer, anda boleh menggunakan bytes.Buffer.Next() kaedah:

func readSB(buf []byte) {
    p := bytes.NewBuffer(buf)

    binary.Read(p, binary.LittleEndian, &fs.sb.inodeCount)
    binary.Read(p, binary.LittleEndian, &fs.sb.blockCount)
    p.Next(12)
    binary.Read(p, binary.LittleEndian, &fs.sb.firstDataBlock)
    binary.Read(p, binary.LittleEndian, &fs.sb.blockSize)
    p.Next(4)
    binary.Read(p, binary.LittleEndian, &fs.sb.blockPerGroup)
    p.Next(4)
    binary.Read(p, binary.LittleEndian, &fs.sb.inodePerBlock)
}
Salin selepas log masuk

Bacaan Berasaskan Struktur

Pendekatan alternatif ialah mencipta struktur pengepala dan menggunakan binari.Baca terus:

type Head struct {
    InodeCount      uint32  //  0:4
    BlockCount      uint32  //  4:8
    // Skip fields
    FirstBlock      uint32  // 20:24
    BlockSize       uint32  // 24:28
    // Skip fields
    BlocksPerGroup  uint32  // 32:36
    // Skip fields
    InodesPerBlock  uint32  // 40:44
}

func readSB(buf []byte) {
    var header Head
    if err := binary.Read(bytes.NewReader(buf), binary.LittleEndian, &header); err != nil {
        log.Fatal(err)
    }

    // Access data using header fields
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nilai Integer dengan Cekap daripada Penampan Bait 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan