字符咋存?utf8咋编码?string啥结构?

字符 字节
一个比特可以是0 也可以是1
8个比特组成一个字节
全为0时代表数字0
全为1时代表数字255
一个字节可以表示256个数字
两个字节可以表示65536个数字
多个字节可以有更多的组合就可以表示更大的数字范围
一堆数字的01怎么也不能直接表示一个字母A或者汉字
这时候需要用数字中转 只要给他一个数值编号 要存储字符时就存储这个编号,收录很多字符就能得到一个编号对照表
这就是一个“字符集”


字符集
ASCII字符集只收录了128个字符 其扩展字符集也只有256个
unicode字符集可以跨语言跨文本
Unicode采用的是定长编码
小编号少占字节,大编号多占字节
0-127 0??????? 以0表示作为高位固定标识
0-2047 110????? 10??????  10以110表示作为高位固定标识
2048-65535 1110???? 10?????? 10?????? 以1110  10 10表示作为高位固定标识
去除标识位取值拼凑就能快速得到具体编码的二进制
字符串 string会怎么样存在内存中?
首先由有一个起始地址这样才可以找到字符串内容,但是找的到开头找不到结尾,内存那么大天知道结尾在哪
在c语言中是以一个特定的字符标识表示结束
c语言用的是编号为0的字符来表示结算,但是这也现在内容中不能出现这个标识符,否则会发生不可预估的后沟

go语言是在起始地址后面存一个字符长度
这样即找到的开头也找到的结尾

循环
请先登录后发表评论
  • latest comments
  • 总共0条评论