go中utf8编码问题
废话不多说先贴代码
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
图是截的go the programing language上面截的,说ascii编码都应该是0开头的啊,为什么打出来'h'的编码是1101000,这个让我有点懵啊?希望高手指点一下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

题主显然比较粗心啊...
你没有注意到 1101000 只有7位吗? 如果是按1个字节来算的话,是需要8位二进制的。
所以 a[0] 在%b模式下输出的内容其实是 01101000,换算成16进制则为0x68,查ASCII码表正好是 'h'
原因在于:很多时候打印函数会认为最高位为符号位,因此会将最高位为0的情况给省略掉不打印。
其余的,就不要我多说了吧。审题要仔细啊!!!