go 中说 byte 是 uint8 的别名,长度为 1 个字节,用于表示 ASCII 字符
那 unit8 的取值范围是 0-255 ascii 只有 128 个字符
例如下面的代码
var b1 byte = 129
var b2 byte = 65
var b3 byte = 253
fmt.Println("b1", string(b1))
fmt.Println("b2", string(b2))
fmt.Println("b3", string(b3))
输出
b1
b2 A
b3 ý
b1 转字符串之后是空的
b3 超过 128 了 打印出来字符串ý ascii 码表里又没有这个ý
我学不会了呢啊😂
1
0TSH60F7J2rVkg8t 2021-05-19 14:47:37 +08:00 1
因为 string 转换的数据,并不是 byte,而是 unicode 的字符,而 ý 的 Unicode 码是:U+00FD,去掉高位 00,也就是 253 。所以转换后补码成了 2 个 byte 代表一个字符,高位 0,低位 253,正好就是 U+00FD,也就是 ý
|
2
2kCS5c0b0ITXE5k2 2021-05-19 15:12:08 +08:00 1
go string() 只能转成 unicode 字符吧.
|
3
d0m2o08 OP |
4
pabupa 2021-05-19 18:53:06 +08:00
|