python
主页 > 脚本 > python >

Python bytes string相互转换过程解析的详解

2020-03-05 | 秩名 | 点击:

一.bytes和string区别

1.python bytes 也称字节序列,并非字符。取值范围 0 <= bytes <= 255,输出的时候最前面会有字符b修饰;string 是python中字符串类型;

2.bytes主要是给在计算机看的,string主要是给人看的;

3.string经过编码encode,转化成二进制对象,给计算机识别;bytes经过解码decode,转化成string,让我们看,但是注意反编码的编码规则是有范围,\xc8就不是utf8识别的范围;

?
1
2
3
4
5
6
7
8
9
if __name__ == "__main__":
  # 字节对象b
  b = b"shuopython.com"
  # 字符串对象s
  s = "shuopython.com"
  print(b)
  print(type(b))
  print(s)
  print(type(s))

输出结果:

?
1
2
3
4
b'shuopython.com'
<class 'bytes'>
shuopython.com
<class 'str'>

二.bytes转string

string经过编码encode转化成bytes

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com
 
@File:python_bytes_string.py
@Time:2020/2/26 21:25
 
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
if __name__ == "__main__":
  s = "shuopython.com"
  # 将字符串转换为字节对象
  b2 = bytes(s, encoding='utf8') # 必须制定编码格式
  # print(b2)
 
  # 字符串encode将获得一个bytes对象
  b3 = str.encode(s)
  b4 = s.encode()
  print(b3)
  print(type(b3))
  print(b4)
  print(type(b4))

输出结果:

?
1
2
3
4
b'shuopython.com'
<class 'bytes'>
b'shuopython.com'
<class 'bytes'>

三.string转bytes

bytes经过解码decode转化成string

?
1
2
3
4
5
6
7
8
9
10
if __name__ == "__main__":
  # 字节对象b
  b = b"shuopython.com"
  print(b)
  b = bytes("猿说python", encoding='utf8')
  print(b)
  s2 = bytes.decode(b)
  s3 = b.decode()
  print(s2)
  print(s3)

输出结果:

?
1
2
3
4
b'shuopython.com'
b'\xe7\x8c\xbf\xe8\xaf\xb4python'
猿说python
猿说python

原文链接:https://www.cnblogs.com/shuopython/p/12409184.html
相关文章
最新更新