自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

快速了解 “小字端” 和 “大字端” 及 Go 語言中的使用

開發(fā) 后端
對于數(shù)字 573785173 用十六進(jìn)制表示為 0x22334455 。如何轉(zhuǎn)化的,本篇不需要搞清楚,但如果你不懂就最好了解下。

[[443198]]

 “大字端” 和 “小字端” 表示的是數(shù)據(jù)存儲時的順序區(qū)別,例如:

對于數(shù)字 573785173 用十六進(jìn)制表示為 0x22334455 。如何轉(zhuǎn)化的,本篇不需要搞清楚,但如果你不懂就最好了解下。

對于 0x22334455 ,左邊是高位,右邊是低位,這和我們平常表示數(shù)字是一樣的,例如:十二(12),1 就是高位(十位),2 就是低位(個位)。

那么給這種,從左到右,由高位到低位的表示方法就稱為 “大字端”。

相反,從左到右,由低位到高位的表示方法就稱為 “小字端”。

在計算機(jī)存儲數(shù)據(jù)時,是以字節(jié)為單位去存儲,因此把 0x22334455 拆分:

  • 大字端:0x22 0x33 0x44 0x55
  • 小字端:0x55 0x44 0x33 0x22

為啥出現(xiàn)兩種

因為不同的使用場景下,效率是不一樣。

大字端

例如,對于網(wǎng)絡(luò)傳輸,使用的就是大字端。為什么?

因為,早年設(shè)備的緩存很小,先接收高字節(jié)能快速的判斷報文信息:包長度(需要準(zhǔn)備多大緩存)、地址范圍(IP地址是從前到后匹配的)。

在性能不是很好的設(shè)備上,高字節(jié)在先確實是會更快一些。

小字端

例如,對于一個加法器,選擇的是小字端。為什么?

因為,加法是從低位到高位開始加,一旦有進(jìn)位,就直接送到下一位,設(shè)計就很簡單。

Go 語言中應(yīng)用

使用 Go 語言中 binary 這個標(biāo)準(zhǔn)包,該包實現(xiàn)了數(shù)字與字節(jié)之間的轉(zhuǎn)化。

下來我們將數(shù)字 0x22334455 轉(zhuǎn)化為大字端字節(jié)存儲。

  1. buffer := new(bytes.Buffer) 
  2. binary.Write(buffer, binary.BigEndian, int32(0x22334455)) 
  • binary.BigEndian 常量,表示大字端。

將數(shù)字 0x22334455 轉(zhuǎn)化為小字端字節(jié)存儲。

  1. buffer := new(bytes.Buffer) 
  2. binary.Write(buffer, binary.LittleEndian, int32(0x22334455)) 
  • binary.LittleEndian 常量,表示小字端。

完整例子(僅展示大字端):

  1. package main 
  2.  
  3. import ( 
  4.    "bytes" 
  5.    "encoding/binary" 
  6.    "fmt" 
  7.  
  8. func main() { 
  9.    buffer := new(bytes.Buffer) 
  10.    err := binary.Write(buffer, binary.BigEndian, int32(0x22334455)) 
  11.    if err != nil { 
  12.       panic(err) 
  13.    } 
  14.  
  15.    var num int32 
  16.    err = binary.Read(buffer,binary.BigEndian, &num) 
  17.    if err != nil { 
  18.       panic(err) 
  19.    } 
  20.  
  21.    fmt.Println(num) 
  22.  
  • binary.Write 寫入 buffer 變量。
  • binary.Read 從 buffer 變量讀取。
  • int32(0x22334455) 必須使用固定長度,比如 int 類型就不可以,支持類型如下圖:

再補充一個類型 []byte,它等價于 []uint8 類型。

參考

官方:https://pkg.go.dev/encoding/binary

本文轉(zhuǎn)載自微信公眾號「 瀟灑哥和黑大帥」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 瀟灑哥和黑大帥公眾號。

 

責(zé)任編輯:武曉燕 來源: 瀟灑哥和黑大帥
相關(guān)推薦

2025-03-28 07:50:00

端到端測試Go語言

2025-03-20 07:01:40

2023-10-09 07:14:42

panicGo語言

2024-05-10 08:36:40

Go語言對象

2023-11-21 15:46:13

Go內(nèi)存泄漏

2023-12-30 18:35:37

Go識別應(yīng)用程序

2012-06-15 09:56:40

2024-04-01 00:02:56

Go語言代碼

2021-05-07 15:28:03

Kafka客戶端Sarama

2014-04-09 09:32:24

Go并發(fā)

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2023-12-21 07:09:32

Go語言任務(wù)

2021-07-15 23:18:48

Go語言并發(fā)

2024-04-07 11:33:02

Go逃逸分析

2013-06-25 09:52:32

GoGo語言Go編程

2024-11-05 18:18:48

2016-11-14 17:36:57

Angular 2應(yīng)用程序端對端

2022-07-19 12:25:29

Go

2023-07-29 15:03:29

2023-11-30 08:09:02

Go語言
點贊
收藏

51CTO技術(shù)棧公眾號