Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengekodkan Slice Byte dengan Cekap sebagai Int64 dalam Go?

Bagaimanakah Saya Boleh Mengekodkan Slice Byte dengan Cekap sebagai Int64 dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-06 01:05:11
asal
914 orang telah melayarinya

How Can I Efficiently Encode a Byte Slice as an Int64 in Go?

Pengekodan Int64 yang Cekap bagi Slices Byte dalam Go

Pertimbangkan senario berikut: anda mempunyai tatasusunan bait dan perlu mengekodnya sebagai int64 untuk pemprosesan atau penyimpanan selanjutnya. Walaupun terdapat pelbagai pendekatan untuk mencapai perkara ini dalam Go, adakah terdapat cara yang lebih idiomatik atau cekap untuk melaksanakan pengekodan ini?

Satu pendekatan biasa ialah menggelung melalui bait dan beralih secara manual serta menggabungkannya ke dalam pembolehubah int64. Walaupun kaedah ini berfungsi, ia boleh membosankan dan terdedah kepada ralat.

Pendekatan alternatif yang idiomatik dan cekap melibatkan penggunaan operator bitwise yang disediakan oleh Go. Coretan kod berikut menunjukkan pendekatan ini:

func main() {
    var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244}
    data := int64(0)

    for _, b := range mySlice {
        data = (data << 8) | int64(b)
    }
    fmt.Printf("%d\n", data)
}
Salin selepas log masuk

Dalam contoh ini, operator anjakan kiri bitwise (<<) digunakan untuk menganjak pembolehubah data ditinggalkan sebanyak 8 bit dalam setiap lelaran. Nilai bait semasa kemudiannya ditukar kepada int64 dan bitwise ATAU (|) dengan data. Proses ini menambahkan nilai bait secara berkesan ke hujung kiri pembolehubah data, mewujudkan perwakilan int64 yang dikehendaki bagi kepingan bait.

Pendekatan ini ringkas, cekap dan sejajar dengan gaya idiomatik Go. Dengan memanfaatkan operator bitwise, ia mengurangkan keperluan untuk gelung eksplisit dan manipulasi bit manual, menjadikan kod lebih mudah dibaca dan diselenggara.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekodkan Slice Byte dengan Cekap sebagai Int64 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