ホームページ >バックエンド開発 >Golang >Go でバイトスライスを Int64 として効率的にエンコードするにはどうすればよいですか?

Go でバイトスライスを Int64 として効率的にエンコードするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-06 01:05:11900ブラウズ

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

Go でのバイト スライスの効率的な Int64 エンコーディング

次のシナリオを考えてみましょう。バイトの配列があり、それをさらなる処理または保存には int64 を使用します。 Go でこれを実現するにはさまざまなアプローチがありますが、このエンコーディングを実行するためのより慣用的または効率的な方法はありますか?

一般的なアプローチの 1 つは、バイトをループし、手動でシフトして int64 変数にマージすることです。この方法は機能しますが、退屈でエラーが発生しやすい可能性があります。

慣用的で効率的な別のアプローチには、Go が提供するビットごとの演算子を使用します。次のコード スニペットは、このアプローチを示しています。

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

この例では、ビット単位の左シフト演算子 (<

このアプローチは簡潔で効率的で、Go の慣用的なスタイルと一致しています。ビットごとの演算子を活用することで、明示的なループや手動のビット操作の必要性が減り、コードがより読みやすく、保守しやすくなります。

以上がGo でバイトスライスを Int64 として効率的にエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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