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 サイトの他の関連記事を参照してください。