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 ", aa) // a 占位符%c表示字符
fmt.Printf("%T ", 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[:])

原文地址:https://www.cnblogs.com/zccst/p/14054009.html