首頁 >後端開發 >Golang >如何在 Go 中將 []byte Slice 慣用地編碼為 int64?

如何在 Go 中將 []byte Slice 慣用地編碼為 int64?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 15:55:10716瀏覽

How to Idiomatically Encode a []byte Slice into an int64 in Go?

在Go 中將[]byte Slice 編碼為int64 的更慣用方法

在Go 中,有多種方法來編碼[ ]byte 切片為int64。雖然提供的程式碼完成了任務,但可以對其進行最佳化以提高慣用流暢性。

原始程式碼:

var data int64
for i := 0; i < 8; i++ {
    data |= int64(mySlice[i]&byte(255)) << uint((8*8)-((i+1)*8))
}

改良的慣用方法:

另一種更慣用的方法是使用位移位和循環切片:

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)
}

說明:

改進的程式碼利用位移位(>)來有效率地執行編碼。它使用範圍語法迭代切片,將資料值移動 8 位元 (

慣用方法的優點:

  • 簡潔:程式碼是明顯更短且更容易閱讀。
  • 清晰度:將位元操作操作分解為明確的步驟可以增強
  • 效能提升:位移比原來的位元運算更有效率。
  • 相容性:這種方法更符合 Go 程式設計的慣用風格。

以上是如何在 Go 中將 []byte Slice 慣用地編碼為 int64?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn