登录
首页 >  Golang >  Go问答

go中utf8编码问题

来源:SegmentFault

时间:2023-02-24 17:00:49 415浏览 收藏

本篇文章向大家介绍《go中utf8编码问题》,主要包括go、unicode、utf-8、uft,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

废话不多说先贴代码

package main

import "fmt"

func main() {
    a := "hello, world"
    b := "你好世界"
    fmt.Printf("%b %b\n", a[0], b[0])
    fmt.Printf("%b", 'h')
}
log如下
1101000 11100100
1101000

clipboard.png

图是截的go the programing language上面截的,说ascii编码都应该是0开头的啊,为什么打出来'h'的编码是1101000,这个让我有点懵啊?希望高手指点一下

正确答案

题主显然比较粗心啊...

你没有注意到 1101000 只有7位吗? 如果是按1个字节来算的话,是需要8位二进制的。
所以 a[0] 在%b模式下输出的内容其实是 01101000,换算成16进制则为0x68,查ASCII码表正好是 'h'

原因在于:很多时候打印函数会认为最高位为符号位,因此会将最高位为0的情况给省略掉不打印。

其余的,就不要我多说了吧。审题要仔细啊!!!

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《go中utf8编码问题》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表