go中utf8编码问题

发布于 09-04 02:51 字数 465 浏览 18 评论 0

废话不多说先贴代码

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,这个让我有点懵啊?希望高手指点一下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月下客2022-09-11 02:51:21

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

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

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

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

蒗幽2022-09-11 02:51:21

%b代表二进制

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文