最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

4week-3字符串和字符

来源:博客园


(资料图)

一.十六进制,十进制,在ASCII中的表示对应关系

1. 0

十进制十六进制字符
00NULL
0x01    //数值表达方式"\x00"    //十六进制字符表达"\x00"    //十六进制字符串

2.tab

* 字符表示   十六进制  "\x09"    或者       "\t" * 字符串表达  "\x09\t"  2个字符 

3.\n 换行符,新的一行

* 字符表示   "\n"  或者十六进制  "x0a"

4. \r 回车

也支持换行.看在哪种操作系统上

* 字符表达      或者 "\r"  或者十六进制  "\x0d"* 字符串表达      windows  回车换行        "\r\n"  2个字符,必须用字符串        或者        十六进制表达 "\x0d\x0a"      linux        "\n"  //换行            mac        "\r"  //换行

二.字符的宽度不是展示的宽度

  • 我们看到的字符和字符之间的宽度和,存储在磁盘的宽度是2回事
  • 比如内存中存储的是0x61 0A 61编辑器打开后,把0x61翻译成a,把0A翻译成tab,把61翻译成b----> a换行b

1. "a\tb" 字节问题

len3,占用都是3个字节"a空格b"    内存中 "0x61 20 61 ""atabb"     内存中 "0x61 0A 61 " "a\tb"      内存中  "0x61 0A 61 "  \t是一个字节

2.有的编辑器不支持键盘上的"tab键"编程时候保险的方式 用\t

func main() {s1 := "ab" //a和b中间按的是键盘上的"tab键".有的编辑器不支持s2 := "a\tb" //保险做法:\ts3 := "a\x09b" //不要看表面,要看内存s4 := "a\tb" //如果要显示"",用\转义fmt.Println(s1, s2, s3, s4)}

3.明确长度,换行符要,写清楚,由于编辑器的问题,否则不准确

s4 := "a\nb"fmt.Println(s4, len(s4), []byte(s4))

}

三.字符串笔记大小

*字符串笔记,比较的是ascii

//字符串比较大小.比较的是ascii里的十六进制fmt.Println("A" > "a")fmt.Println("a" > "A")fmt.Println("AA" > "Aa")fmt.Println("AAa" > "AaA")

四.字符

1.字符定义:

func main() {s := "a"          //默认:rune 4byte 查unicodevar s1 byte = "a" //字节.查ascii 1个bytefmt.Printf("%T %T", s, s1)}

2.字符串定义

func main() {s := "测"//1.rune 4byte unicode 不是容器,不能lenfmt.Println(s)s1 := "abc"//1.3byte 616263//2.字节是怎么读出来的: utf-8兼容ASCII码.3x1=3个bytefmt.Println(len(s1))s2 := "测试"//1.s2是字符串.utf-8,每个中文3个字节长度6byte;//2.字节是怎么读出来的: "测试"在内存中展开成utf-8的2个字符,2x3=6个bytefmt.Println(len(s2)) //len只看字节数,其他语言是看字符数的,len只能用在内建s3 := "测"//1.一个的字符串,utf-8.一个汉字占3bytefmt.Println(len(s3))}

3.string.有序字节序列

关键词: 十六进制 对应关系 字符表示