Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh mengekod kepingan bait dengan cekap ke dalam int64 dalam Go?
Pengekodan Slice Byte yang Cekap dalam Go
Bagaimanakah anda boleh mengekod kepingan bait ke dalam int64 dalam Go menggunakan pendekatan idiomatik? Pertimbangkan coretan kod berikut:
import "fmt" func main() { var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244} var data int64 for i := 0; i < 8; i++ { data |= int64(mySlice[i] & byte(255)) << uint((8*8)-((i+1)*8)) } fmt.Println(data) }
Semasa kod ini menyelesaikan tugas, adakah cara yang lebih ringkas dan elegan untuk mencapai hasil yang sama?
Penyelesaian Idiomatik
Cara yang lebih idiomatik untuk mengekod kepingan bait ke dalam int64 disediakan dalam perkara berikut kod:
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) }
Dalam penyelesaian ini, kami menggunakan operator julat untuk mengulangi elemen kepingan bait dan menggunakan operator anjakan kiri bitwise (<<) untuk mengumpul nilai dengan cekap ke dalam int64.
Kebaikan Idiomatik Pendekatan
Kesimpulan
Walaupun coretan kod asal mungkin lebih jelas dari segi operasi manipulasi bit tertentu, pendekatan idiomatik adalah lebih ringkas, elegan, dan boleh diselenggara. Untuk kebanyakan kes, penyelesaian idiomatik ialah pilihan pilihan untuk mengekodkan kepingan bait ke dalam int64 dalam Go.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekod kepingan bait dengan cekap ke dalam int64 dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!