Python3 中bytes数据类型深入理解(ASCII码对照表)

bytes的来源

bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的。

bytes 的意思是“字节”,以字节为单位存储数据。而一个字节二进制为8个比特位。

字节串(bytes)和字符串(string)的对比:

摘自:http://c.biancheng.net/view/2175.html

  • 字符串由若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。
  • 字节串和字符串除了操作的数据单元不同之外,它们支持的所有方法都基本相同。
  • 字节串和字符串都是不可变序列,不能随意增加和删除数据。


bytes 只负责以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。如果采用合适的字符编码方式(字符集),字节串可以恢复成字符串;反之亦然,字符串也可以转换成字节串。

说白了,bytes 只是简单地记录内存中的原始数据,至于如何使用这些数据,bytes 并不在意,你想怎么使用就怎么使用,bytes 并不约束你的行为。

bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件。

字符串和 bytes 存在着千丝万缕的联系,我们可以通过字符串来创建 bytes 对象,或者说将字符串转换成 bytes 对象。有以下三种方法可以达到这个目的:

  • 如果字符串的内容都是 ASCII 字符,那么直接在字符串前面添加b前缀就可以转换成 bytes。
  • bytes 是一个类,调用它的构造方法,也就是 bytes(),可以将字符串按照指定的字符集转换成 bytes;如果不指定字符集,那么默认采用 UTF-8。

字符串本身有一个 encode() 方法,该方法专门用来将字符串按照指定的字符集转换成对应的字节串;如果不指定字符集,那么默认采用 UTF-8。

bytes的在Python 中的表示方法

bytes的在Python 中的表示法默认为展示对应的ASCII 字符,但ASCII码表256个中只有95个可以打印的字符。

如果一个bytes类型的数据(一串bytes 暂且叫做“字节串”)一些字节没有对应的可打印字符时,则用十六进制表示法展示。

 

#通过b前缀将字符串转换成 bytes
b3 = b'http://c.biancheng.net/python/'
print("b3: ", b3)

b4 = bytes('C语言中文网8岁了', encoding='UTF-8') print("b4: ", b4)

输出

b3:  b'http://c.biancheng.net/python/'
b4:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'

附录:ASCII码对照表

附一:基础ASCII码 128个,其中可打印字符95个

http://ascii.911cha.com/

ASCII控制字符

二进制十进制十六进制缩写可以显示的表示法名称/意义
0000 0000 0 00 NUL ␀ 空字符(Null)
0000 0001 1 01 SOH ␁ 标题开始
0000 0010 2 02 STX ␂ 本文开始
0000 0011 3 03 ETX ␃ 本文结束
0000 0100 4 04 EOT ␄ 传输结束
0000 0101 5 05 ENQ ␅ 请求
0000 0110 6 06 ACK ␆ 确认回应
0000 0111 7 07 BEL ␇ 响铃
0000 1000 8 08 BS ␈ 退格
0000 1001 9 09 HT ␉ 水平定位符号
0000 1010 10 0A LF ␊ 换行键
0000 1011 11 0B VT ␋ 垂直定位符号
0000 1100 12 0C FF ␌ 换页键
0000 1101 13 0D CR ␍ 归位键
0000 1110 14 0E SO ␎ 取消变换(Shift out)
0000 1111 15 0F SI ␏ 启用变换(Shift in)
0001 0000 16 10 DLE ␐ 跳出数据通讯
0001 0001 17 11 DC1 ␑ 设备控制一(XON 启用软件速度控制)
0001 0010 18 12 DC2 ␒ 设备控制二
0001 0011 19 13 DC3 ␓ 设备控制三(XOFF 停用软件速度控制)
0001 0100 20 14 DC4 ␔ 设备控制四
0001 0101 21 15 NAK ␕ 确认失败回应
0001 0110 22 16 SYN ␖ 同步用暂停
0001 0111 23 17 ETB ␗ 区块传输结束
0001 1000 24 18 CAN ␘ 取消
0001 1001 25 19 EM ␙ 连接介质中断
0001 1010 26 1A SUB ␚ 替换
0001 1011 27 1B ESC ␛ 跳出
0001 1100 28 1C FS ␜ 文件分割符
0001 1101 29 1D GS ␝ 组群分隔符
0001 1110 30 1E RS ␞ 记录分隔符
0001 1111 31 1F US ␟ 单元分隔符
0111 1111 127 7F DEL ␡ 删除

ASCII可显示字符

二进制十进制十六进制图形
0010 0000 32 20 (空格)(␠)
0010 0001 33 21 !
0010 0010 34 22 "
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25  %
0010 0110 38 26 &
0010 0111 39 27 '
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
 
二进制十进制十六进制图形
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
 
二进制十进制十六进制图形
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~

附二:扩展ASCII码,默认都不可打印

    https://tool.ip138.com/ascii_code/

DECOCTHEXBIN缩写/符号HTML实体描述
128 200 80 10000000 € &#128; Euro sign
129 201 81 10000001      
130 202 82 10000010 ‚ &#130; Single low-9 quotation mark
131 203 83 10000011 ƒ &#131; Latin small letter f with hook
132 204 84 10000100 „ &#132; Double low-9 quotation mark
133 205 85 10000101 … &#133; Horizontal ellipsis
134 206 86 10000110 † &#134; Dagger
135 207 87 10000111 ‡ &#135; Double dagger
136 210 88 10001000 ˆ &#136; Modifier letter circumflex accent
137 211 89 10001001 ‰ &#137; Per mille sign
138 212 8A 10001010 Š &#138; Latin capital letter S with caron
139 213 8B 10001011 ‹ &#139; Single left-pointing angle quotation
140 214 8C 10001100 Œ &#140; Latin capital ligature OE
141 215 8D 10001101      
142 216 8E 10001110 Ž &#142; Latin capital letter Z with caron
143 217 8F 10001111      
144 220 90 10010000      
145 221 91 10010001 ‘ &#145; Left single quotation mark
146 222 92 10010010 ’ &#146; Right single quotation mark
147 223 93 10010011 “ &#147; Left double quotation mark
148 224 94 10010100 ” &#148; Right double quotation mark
149 225 95 10010101 • &#149; Bullet
150 226 96 10010110 – &#150; En dash
151 227 97 10010111 — &#151; Em dash
152 230 98 10011000 ˜ &#152; Small tilde
153 231 99 10011001 ™ &#153; Trade mark sign
154 232 9A 10011010 š &#154; Latin small letter S with caron
155 233 9B 10011011 › &#155; Single right-pointing angle quotation mark
156 234 9C 10011100 œ &#156; Latin small ligature oe
157 235 9D 10011101      
158 236 9E 10011110 ž &#158; Latin small letter z with caron
159 237 9F 10011111 Ÿ &#159; Latin capital letter Y with diaeresis
160 240 A0 10100000   &#160; Non-breaking space
161 241 A1 10100001 ¡ &#161; Inverted exclamation mark
162 242 A2 10100010 ¢ &#162; Cent sign
163 243 A3 10100011 £ &#163; Pound sign
164 244 A4 10100100 ¤ &#164; Currency sign
165 245 A5 10100101 ¥ &#165; Yen sign
166 246 A6 10100110 ¦ &#166; Pipe, Broken vertical bar
167 247 A7 10100111 § &#167; Section sign
168 250 A8 10101000 ¨ &#168; Spacing diaeresis - umlaut
169 251 A9 10101001 © &#169; Copyright sign
170 252 AA 10101010 ª &#170; Feminine ordinal indicator
171 253 AB 10101011 « &#171; Left double angle quotes
172 254 AC 10101100 ¬ &#172; Not sign
173 255 AD 10101101 ­ &#173; Soft hyphen
174 256 AE 10101110 ® &#174; Registered trade mark sign
175 257 AF 10101111 ¯ &#175; Spacing macron - overline
176 260 B0 10110000 ° &#176; Degree sign
177 261 B1 10110001 ± &#177; Plus-or-minus sign
178 262 B2 10110010 ² &#178; Superscript two - squared
179 263 B3 10110011 ³ &#179; Superscript three - cubed
180 264 B4 10110100 ´ &#180; Acute accent - spacing acute
181 265 B5 10110101 µ &#181; Micro sign
182 266 B6 10110110 &#182; Pilcrow sign - paragraph sign
183 267 B7 10110111 · &#183; Middle dot - Georgian comma
184 270 B8 10111000 ¸ &#184; Spacing cedilla
185 271 B9 10111001 ¹ &#185; Superscript one
186 272 BA 10111010 º &#186; Masculine ordinal indicator
187 273 BB 10111011 » &#187; Right double angle quotes
188 274 BC 10111100 ¼ &#188; Fraction one quarter
189 275 BD 10111101 ½ &#189; Fraction one half
190 276 BE 10111110 ¾ &#190; Fraction three quarters
191 277 BF 10111111 ¿ &#191; Inverted question mark
192 300 C0 11000000 À &#192; Latin capital letter A with grave
193 301 C1 11000001 Á &#193; Latin capital letter A with acute
194 302 C2 11000010 Â &#194; Latin capital letter A with circumflex
195 303 C3 11000011 Ã &#195; Latin capital letter A with tilde
196 304 C4 11000100 Ä &#196; Latin capital letter A with diaeresis
197 305 C5 11000101 Å &#197; Latin capital letter A with ring above
198 306 C6 11000110 Æ &#198; Latin capital letter AE
199 307 C7 11000111 Ç &#199; Latin capital letter C with cedilla
200 310 C8 11001000 È &#200; Latin capital letter E with grave
201 311 C9 11001001 É &#201; Latin capital letter E with acute
202 312 CA 11001010 Ê &#202; Latin capital letter E with circumflex
203 313 CB 11001011 Ë &#203; Latin capital letter E with diaeresis
204 314 CC 11001100 Ì &#204; Latin capital letter I with grave
205 315 CD 11001101 Í &#205; Latin capital letter I with acute
206 316 CE 11001110 Î &#206; Latin capital letter I with circumflex
207 317 CF 11001111 Ï &#207; Latin capital letter I with diaeresis
208 320 D0 11010000 Ð &#208; Latin capital letter ETH
209 321 D1 11010001 Ñ &#209; Latin capital letter N with tilde
210 322 D2 11010010 Ò &#210; Latin capital letter O with grave
211 323 D3 11010011 Ó &#211; Latin capital letter O with acute
212 324 D4 11010100 Ô &#212; Latin capital letter O with circumflex
213 325 D5 11010101 Õ &#213; Latin capital letter O with tilde
214 326 D6 11010110 Ö &#214; Latin capital letter O with diaeresis
215 327 D7 11010111 × &#215; Multiplication sign
216 330 D8 11011000 Ø &#216; Latin capital letter O with slash
217 331 D9 11011001 Ù &#217; Latin capital letter U with grave
218 332 DA 11011010 Ú &#218; Latin capital letter U with acute
219 333 DB 11011011 Û &#219; Latin capital letter U with circumflex
220 334 DC 11011100 Ü &#220; Latin capital letter U with diaeresis
221 335 DD 11011101 Ý &#221; Latin capital letter Y with acute
222 336 DE 11011110 Þ &#222; Latin capital letter THORN
223 337 DF 11011111 ß &#223; Latin small letter sharp s - ess-zed
224 340 E0 11100000 à &#224; Latin small letter a with grave
225 341 E1 11100001 á &#225; Latin small letter a with acute
226 342 E2 11100010 â &#226; Latin small letter a with circumflex
227 343 E3 11100011 ã &#227; Latin small letter a with tilde
228 344 E4 11100100 ä &#228; Latin small letter a with diaeresis
229 345 E5 11100101 å &#229; Latin small letter a with ring above
230 346 E6 11100110 æ &#230; Latin small letter ae
231 347 E7 11100111 ç &#231; Latin small letter c with cedilla
232 350 E8 11101000 è &#232; Latin small letter e with grave
233 351 E9 11101001 é &#233; Latin small letter e with acute
234 352 EA 11101010 ê &#234; Latin small letter e with circumflex
235 353 EB 11101011 ë &#235; Latin small letter e with diaeresis
236 354 EC 11101100 ì &#236; Latin small letter i with grave
237 355 ED 11101101 í &#237; Latin small letter i with acute
238 356 EE 11101110 î &#238; Latin small letter i with circumflex
239 357 EF 11101111 ï &#239; Latin small letter i with diaeresis
240 360 F0 11110000 ð &#240; Latin small letter eth
241 361 F1 11110001 ñ &#241; Latin small letter n with tilde
242 362 F2 11110010 ò &#242; Latin small letter o with grave
243 363 F3 11110011 ó &#243; Latin small letter o with acute
244 364 F4 11110100 ô &#244; Latin small letter o with circumflex
245 365 F5 11110101 õ &#245; Latin small letter o with tilde
246 366 F6 11110110 ö &#246; Latin small letter o with diaeresis
247 367 F7 11110111 ÷ &#247; Division sign
248 370 F8 11111000 ø &#248; Latin small letter o with slash
249 371 F9 11111001 ù &#249; Latin small letter u with grave
250 372 FA 11111010 ú &#250; Latin small letter u with acute
251 373 FB 11111011 û &#251; Latin small letter u with circumflex
252 374 FC 11111100 ü &#252; Latin small letter u with diaeresis
253 375 FD 11111101 ý &#253; Latin small letter y with acute
254 376 FE 11111110 þ &#254; Latin small letter thorn
255 377 FF 11111111 ÿ &#255; Latin small letter y with diaeresis

 str和bytes的区别bytes在python3中明确表示2进制数据。

字符串和二进制bytes之间的转换

字符串-->二进制,使用encode()

二进制-->字符串,使用decode('字符编码XXX')

decode('unicode_escape')

decode('utf-8')

...参考https://www.cnblogs.com/zhangmingda/p/9030229.html

 

256

posted on 2020-12-12 09:42  zhangmingda  阅读(4448)  评论(0)    收藏  举报

导航