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'Cxe8xafxadxe8xa8x80xe4xb8xadxe6x96x87xe7xbdx918xe5xb2x81xe4xbax86'

附录: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

原文地址:https://www.cnblogs.com/zhangmingda/p/14123752.html