go byte類型-慢慢理解


 

 

 

對於一個前端背景的人來說,理解byte類型真是一件費力的事。因為js里並沒有byte,作為靜態類語言go,肯定要與底層打交道,就不得不學習byte類型。

byte就是字節的意思,一個字節就是8個二進制位。2的8次方-1=127。uint8,無符號整形,占8位,正好也是2的8次方-1,127.

 

1,定義byte(字符)類型

var aa byte = 'a' // 單個字符 byte(uint8類型的別名)。 可以和整型類型直接相加減
fmt.Printf("%c \n", aa) // a 占位符%c表示字符
fmt.Printf("%T \n", aa) // uint8 (byte類型其實就是uint8類型的別名)

 

再看看ASCII的定義:

ASCII ((American Standard Code for Information Interchange): 美國信息交換標准代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。它是最通用的信息交換標准,並等同於國際標准ISO/IEC 646。ASCII第一次以規范標准的類型發表是在1967年,最后一次更新則是在1986年,到目前為止共定義了128個字符

 

正好也是128個字符,對應一個字節,對應uint8

這就好理解,單個字符為什么是byte了。因為0-9,a-z,A-Z都對應一個ASCII值,字符就在其中。

如果用十六進制表示,正好占兩位。0x_ _兩位來表示。

美國人民真幸福,這128個字符就能滿足需求了。

 

別的國家,開始在此基礎上擴充。

詳細參考:http://c.biancheng.net/view/18.html

 

2,字節數組

就是一個數組,里面每一個元素都是字符,字符又跟字節划等號。所以字符串和字節數組之間可以相互轉化。

1. string 轉為[]byte
var str string = "test"
var data []byte = []byte(str)

2. byte轉為string
var data [10]byte
byte[0] = 'T'
byte[1] = 'E'
var str string = string(data[:])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM