ASCII对照表:https://www.jyshare.com/front-end/6318/
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCII)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
查看系统中的ascii码:man ascii (显示如下/不完整)
Oct Dec Hex Char Oct Dec Hex Char────────────────────────────────────────────────────────────────────────000 0 00 NUL '\0' (null character) 100 64 40 @001 1 01 SOH (start of heading) 101 65 41 A002 2 02 STX (start of text) 102 66 42 B003 3 03 ETX (end of text) 103 67 43 C004 4 04 EOT (end of transmission) 104 68 44 D005 5 05 ENQ (enquiry) 105 69 45 E006 6 06 ACK (acknowledge) 106 70 46 F007 7 07 BEL '\a' (bell) 107 71 47 G010 8 08 BS '\b' (backspace) 110 72 48 H011 9 09 HT '\t' (horizontal tab) 111 73 49 I012 10 0A LF '\n' (new line) 112 74 4A J013 11 0B VT '\v' (vertical tab) 113 75 4B K014 12 0C FF '\f' (form feed) 114 76 4C L015 13 0D CR '\r' (carriage ret) 115 77 4D M016 14 0E SO (shift out) 116 78 4E N017 15 0F SI (shift in) 117 79 4F O020 16 10 DLE (data link escape) 120 80 50 P021 17 11 DC1 (device control 1) 121 81 51 Q022 18 12 DC2 (device control 2) 122 82 52 R023 19 13 DC3 (device control 3) 123 83 53 S024 20 14 DC4 (device control 4) 124 84 54 T025 21 15 NAK (negative ack.) 125 85 55 U026 22 16 SYN (synchronous idle) 126 86 56 V027 23 17 ETB (end of trans. blk) 127 87 57 W030 24 18 CAN (cancel) 130 88 58 X031 25 19 EM (end of medium) 131 89 59 Y032 26 1A SUB (substitute) 132 90 5A Z033 27 1B ESC (escape) 133 91 5B [034 28 1C FS (file separator) 134 92 5C \ '\\'035 29 1D GS (group separator) 135 93 5D ]036 30 1E RS (record separator) 136 94 5E ^037 31 1F US (unit separator) 137 95 5F _040 32 20 SPACE 140 96 60 `041 33 21 ! 141 97 61 a042 34 22 " 142 98 62 b043 35 23 # 143 99 63 c044 36 24 $ 144 100 64 d045 37 25 % 145 101 65 e046 38 26 & 146 102 66 f047 39 27 ' 147 103 67 g050 40 28 ( 150 104 68 h051 41 29 ) 151 105 69 i052 42 2A * 152 106 6A j053 43 2B + 153 107 6B k054 44 2C , 154 108 6C l055 45 2D - 155 109 6D m056 46 2E . 156 110 6E n057 47 2F / 157 111 6F o060 48 30 0 160 112 70 p061 49 31 1 161 113 71 q062 50 32 2 162 114 72 r063 51 33 3 163 115 73 s064 52 34 4 164 116 74 t065 53 35 5 165 117 75 u066 54 36 6 166 118 76 v067 55 37 7 167 119 77 w070 56 38 8 170 120 78 x071 57 39 9 171 121 79 y072 58 3A : 172 122 7A z073 59 3B ; 173 123 7B {074 60 3C < 174 124 7C |075 61 3D = 175 125 7D }076 62 3E > 176 126 7E ~077 63 3F ? 177 127 7F DEL
例如,字符串:“hello world” —>字符串多个字符组合在一起(C语言中没有string类型,以字符数组的形式存储字符串:“hello world” )
char a = 'A' ---> 大小: 1个字节: 8个bit位
存储: 'A' 保存在 变量a里面 --->存储必然和二进制有关
单纯‘A’ 没有二进制怎么办呢? ---> C库就制作一种对应码 ---> ASCII码 (A码)会记录一些特殊字符的对应的数值,用于计算机的存储数据。例如:‘A’ ----> 65
所以,字符**‘A’**在ascii码表中表示为:
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
000 0 00 NUL '\0' (null character) 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A ---> 'A'--65--0100 0001
002 2 02 STX (start of text) 102 66 42 B
字符和整型的大小不一样
双方的标志位也不一样 :最终需要通过标志来判断 65到底普通数值,还是字符'A'
分析: 字符串在计算机中的存储(对照ASCII码表):
“hello world” --->人眼看到的
“hello world\0”--->在缓冲区的样子
一次解码: 'h''e''l''l''o'' ''w''o''r''l''d''\0' --->字符串真实模样 ,由多个字符串联在一起
通过A码: '104''101''108'‘108’‘111’‘32’ --->自行操作
存储: 将A码转化为二进制 '01101000' '01100101' '01101100' ‘01101100’ ‘01101111’ ‘00100000’