zoukankan      html  css  js  c++  java
  • golang中uint8字节切片转字符串

    假如拿到了一个字节切片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。

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

  • 相关阅读:
    模拟乒乓球双打和单打比赛
    关于zip内置函数的应用及在 Python 2 和 3 的不同之处
    计算文本平均列数
    四则运算
    Python跳一跳小游戏
    数据库
    类和正则表达
    带进度条的圆周率计算
    球队预测
    自己的第一个网页
  • 原文地址:https://www.cnblogs.com/crb912/p/9682337.html
Copyright © 2011-2022 走看看