Go での効率的なバイト スライス エンコーディング
慣用的なアプローチを使用して、Go でバイト スライスを int64 にエンコードするにはどうすればよいでしょうか?次のコード スニペットを考えてみましょう:
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) }
このコードはタスクを達成しますが、同じ結果を達成するためのより簡潔で洗練された方法はありますか?
慣用的な解決策
バイトスライスを int64 にエンコードするより慣用的な方法を以下に示します。 code:
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) }
このソリューションでは、範囲演算子を利用してバイト スライスの要素を反復処理し、ビット単位の左シフト演算子 (<<) を使用して値を効率的に蓄積します。 int64.
慣用句の長所アプローチ
結論
特定のビット操作操作に関しては元のコード スニペットの方が明確かもしれませんが、慣用的なアプローチは、より簡潔でエレガントで、保守しやすいものです。ほとんどの場合、Go でバイト スライスを int64 にエンコードするには、慣用的な解決策が推奨されます。
以上がGo でバイトスライスを int64 に効率的にエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。