ホームページ >バックエンド開発 >Golang >golang ビッグエンディアン変換

golang ビッグエンディアン変換

WBOY
WBOYオリジナル
2023-05-10 17:27:08857ブラウズ

Golang は、最新の Web アプリケーション、クラウド コンピューティング、コンテナ テクノロジー、マイクロサービスで広く使用されている高度なプログラミング言語です。データ処理の分野では、データをビッグエンディアンとスモールエンディアンに変換する必要があることがよくありますが、この記事では、Golang のビッグエンディアンとスモールエンディアンの変換方法を紹介します。

  1. ビッグ エンディアンとスモール エンディアンとは

コンピューターでは、各データ型がメモリ内でその表現を持ちます。その中で最も重要なのは、通常ビッグ エンディアンまたはスモール エンディアンと呼ばれるバイト オーダーです。スモールエンディアン。 「ビッグ エンディアン」は最上位バイトが最初に格納されることを意味し、「リトル エンディアン」は最下位バイトが最初に格納されることを意味します。たとえば、16 ビット数値が 0x1234 の場合、ビッグ エンディアン モードでは 2 バイトのメモリを占有します。最初のバイトは 0x12、2 番目のバイトは 0x34 です。リトル エンディアン モードでは、最初のバイトは 0x34、2 番目のバイトは 0x34 です。バイトは0x12です。

  1. Golang でのビッグエンディアン変換

Golang では、標準ライブラリの Binary パッケージを介してビッグエンディアン変換操作を実行できます。 Binary パッケージは、ビッグ エンディアンとリトル エンディアンのバイト順序を変換する関数を含む、基本型とバイト配列の間で変換する関数を提供します。

その中で、この記事では次の関数に焦点を当てます:

  • func LittleEndian.Uint16(b []byte) uint16

リトルエンディアンを変換します。エンディアン シーケンス b uint16 型の整数に変換します。

  • func LittleEndian.Uint32(b []byte) uint32

リトルエンディアン シーケンス b を uint32 型の整数に変換します。

  • func LittleEndian.Uint64(b []byte) uint64

リトルエンディアン シーケンス b を uint64 型の整数に変換します。

  • func LittleEndian.PutUint16(b []byte, v uint16)

uint16 型の整数 v をリトルエンディアン シーケンス b に書き込みます。

  • func LittleEndian.PutUint32(b []byte, v uint32)

uint32 型の整数 v をリトルエンディアン シーケンス b に書き込みます。

  • func LittleEndian.PutUint64(b []byte, v uint64)

uint64 型の整数 v をリトルエンディアン シーケンス b に書き込みます。

ビッグエンディアン シーケンスの変換については、Binary パッケージでも対応する関数が提供されており、関数名のプレフィックスを BigEndian から LittleEndian に置き換えるだけです。

  1. リトルエンディアン変換の例

以下に、uint16 を例としたリトルエンディアン変換の例を示します。

package main

import (

"encoding/binary"
"fmt"

)

func main() {

src := []byte{0x34, 0x12}
val := binary.LittleEndian.Uint16(src)
fmt.Println(val)

dest := make([]byte, 2)
binary.LittleEndian.PutUint16(dest, val)
fmt.Printf("%x", dest)

}

atこの例では、uint16 型の値を含む長さ 2 のバイト配列 src を定義し、binary.LittleEndian.Uint16(src) を使用してリトルエンディアン シーケンスに変換して出力します。次に、binary.LittleEndian.PutUint16(dest, val) を通じて新しいバイト配列 dest に値を書き込み、Printf 関数を使用してその 16 進表現を出力します。プログラムを実行すると、出力結果は次のようになります。

4660

1234

uint16 型の値 0x1234 が、リトルエンディアンでは 0x3412 として表現されていることがわかります。シーケンスに変換され、元の値に戻すことができます。

  1. 概要

Binary パッケージの機能を使用すると、Golang でビッグエンディアン変換操作を簡単に実行できます。実際のアプリケーションでは、エンディアン変換は非常に一般的なデータ変換方法であり、コンピュータ ネットワーク、ストレージ システム、画像処理などの分野で広く使用されています。したがって、Golang のビッグ エンディアンとスモール エンディアンの変換操作をマスターすることは、データ処理の開発者にとって非常に役立ちます。

以上がgolang ビッグエンディアン変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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