ホームページ > バックエンド開発 > Golang > Go でバイトバッファから整数を効率的にアンパックする方法は?

Go でバイトバッファから整数を効率的にアンパックする方法は?

Patricia Arquette
リリース: 2024-12-01 10:40:14
オリジナル
323 人が閲覧しました

How to Efficiently Unpack Integers from a Byte Buffer in Go?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート