ホームページ >バックエンド開発 >Golang >Go で []byte スライスを int64 に慣用的にエンコードする方法は?

Go で []byte スライスを int64 に慣用的にエンコードする方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-11 15:55:10631ブラウズ

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

Go で []byte スライスを 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 スライスを int64 に慣用的にエンコードする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。