Rumah  >  Artikel  >  pembangunan bahagian belakang  >  penukaran endian besar golang

penukaran endian besar golang

WBOY
WBOYasal
2023-05-10 17:27:08809semak imbas

Golang ialah bahasa pengaturcaraan lanjutan yang digunakan secara meluas dalam aplikasi web moden, pengkomputeran awan, teknologi kontena dan perkhidmatan mikro. Dalam bidang pemprosesan data, selalunya perlu untuk menukar data kepada hujung besar dan kecil Artikel ini akan memperkenalkan anda kepada kaedah penukaran endian besar dan kecil.

  1. Apakah itu endian

Dalam komputer, setiap jenis data mempunyai perwakilannya dalam ingatan, yang paling penting ialah tertib bait, biasanya Dipanggil endian besar atau kecil. "Endian besar" bermaksud bait tertinggi disimpan dahulu, dan "endian kecil" bermaksud bait terendah disimpan dahulu. Sebagai contoh, jika nombor 16-bit ialah 0x1234, ia menduduki dua bait memori dalam mod big-endian, bait pertama ialah 0x12 dan bait kedua ialah 0x34, bait pertama ialah 0x34 dan bait kedua bait ialah 0x12.

  1. Penukaran big-endian di Golang

Di Golang, anda boleh melakukan operasi penukaran big-endian melalui pakej Binari dalam perpustakaan standard. Pakej Binari menyediakan fungsi untuk menukar antara jenis asas dan tatasusunan bait, termasuk fungsi untuk menukar susunan bait besar-endian dan kecil-endian.

Antaranya, artikel ini memfokuskan kepada fungsi berikut:

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

Tukar yang kecil- jujukan endian b Tukarkan kepada integer jenis uint16.

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

Tukar jujukan little-endian b kepada integer jenis uint32.

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

Tukar jujukan little-endian b kepada integer jenis uint64.

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

Tulis integer jenis uint16 v ke dalam jujukan little-endian b.

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

Tulis integer jenis uint32 v ke dalam jujukan little-endian b.

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

Tulis integer jenis uint64 v ke dalam jujukan little-endian b.

Untuk penukaran jujukan big-endian, pakej Binari juga menyediakan fungsi yang sepadan. Cuma gantikan awalan nama fungsi daripada BigEndian kepada LittleEndian.

  1. Contoh penukaran little-endian

Di bawah, kami memberikan contoh penukaran little-endian, mengambil uint16 sebagai contoh.

utama pakej

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)

}

dalam Dalam contoh ini, kami mentakrifkan tatasusunan bait src dengan panjang 2, yang mengandungi nilai jenis uint16 Kami menggunakan binari.LittleEndian.Uint16(src) untuk menukarnya kepada jujukan little-endian dan mencetaknya. Kemudian kami menulis nilai kepada tatasusunan bait baharu dest melalui binary.LittleEndian.PutUint16(dest, val), dan menggunakan fungsi Printf untuk mengeluarkan perwakilan heksadesimalnya. Jalankan atur cara dan keputusan output adalah seperti berikut:

4660

1234

Seperti yang anda lihat, nilai jenis uint16 0x1234 diwakili sebagai 0x3412 dalam little-endian jujukan, dan ditukar kembali Ia boleh dipulihkan kepada nilai asal kemudian.

  1. Ringkasan

Dengan menggunakan fungsi pakej Binari, kami boleh melakukan operasi penukaran big-endian dengan mudah di Golang. Dalam aplikasi praktikal, penukaran endian ialah kaedah penukaran data yang sangat biasa dan digunakan secara meluas dalam rangkaian komputer, sistem storan, pemprosesan imej dan bidang lain. Oleh itu, menguasai operasi penukaran endian besar dan kecil Golang akan sangat membantu pembangun dalam pemprosesan data.

Atas ialah kandungan terperinci penukaran endian besar golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn