crb912

假如拿到了一个字节切片test1 = {\'a\', \'b\', \'c\', \'d\', 11}

package main

import (
	"fmt"
	"reflect"
)

func main(){
	test1 := []byte {\'a\', \'b\', \'c\', \'d\', 11}
	fmt.Println(test1)
	
	test2 := string(test1)
	fmt.Println(test2)

	fmt.Println(reflect.TypeOf(test1[0]))
	return
}

打印的结果

[97 98 99 100 11]

abcd

uint8

这其实就是ASCII码值与英文ASCII字符的互转。ASCII的码值本质上就是uint8类型。 留意一下11对应的是垂直制表符(控制字符), 因此打印出来是看起来是乱码的 “”这个。

对于ASCII码表,应该能简单的记忆一些常用的,有时候比较方便。 参考: http://asciima.com/

这篇博客主要是记录今天遇到的一个Bug: 在用sring对字节序列进行强转时,报了一个不是uint8的错误。

我的解释:
字节 --> 字符串 的转换过程,本质上是字节解码的过程。 这bug的原因应该是该字节不是纯粹的uint8类型,它不是ASCII码,它有可能是utf-8的编码或者别的如GBK。

因此应该先确定是哪种编码,指定编码的类型,然后再选择转换的方式。

分类:

技术点:

相关文章:

  • 2018-12-16
  • 2021-11-03
  • 2021-11-06
  • 2021-05-28
  • 2022-01-03
  • 2021-10-10
  • 2021-11-07
  • 2021-11-16
猜你喜欢
  • 2021-04-11
  • 2021-04-02
  • 2021-11-17
  • 2021-11-07
  • 2021-11-03
  • 2018-12-24
  • 2021-10-08
相关资源
相似解决方案