Golang でバイト バッファから整数を効率的にアンパックする方法
Golang では、バイト バッファを処理するときに、多くの場合、さまざまなタイプの整数を効率的に処理できます。この記事では、特定の要件を遵守しながら、バイト バッファーからさまざまな整数型を効率的にアンパックする 2 つのアプローチ、つまり明示的なオフセットの維持とバイト バッファーからの直接読み取りについて概説します。
アプローチ 1: .Next() を使用して、不要なバイトをスキップ
1 つの方法では、整数を読み取るたびに新しいバッファを作成します。このオーバーヘッドを回避するには、.Next() メソッドを使用して、読みたくないバイトをスキップします。例:
buf := make([]byte, 1024) // ... p := bytes.NewBuffer(buf) // Read the first integer binary.Read(p, binary.LittleEndian, &inodeCount) // Skip unwanted bytes p.Next(12) // Read the next integer binary.Read(p, binary.LittleEndian, &firstDataBlock) // ...
アプローチ 2: ヘッダー構造の使用
別のアプローチは、バイト バッファーの形式に一致するヘッダー構造を作成することです。これにより、binary.Read() を使用してヘッダー全体を直接読み取ることができます。例:
type Header struct { InodeCount uint32 BlockCount uint32 // ... } buf := make([]byte, 1024) // ... var header Header err := binary.Read(bytes.NewBuffer(buf), binary.LittleEndian, &header) if err != nil { // ... } fmt.Printf("%#v", header)
結論
どちらのアプローチでも、明示的なオフセットの要件を満たし、バッファから直接読み取ると同時に、バイト バッファから整数を効率的にアンパックできます。 。どちらを選択するかは、アプリケーションの特定の要件とパフォーマンス特性によって異なります。
以上がGo でバイトバッファから整数を効率的にアンパックする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。