py8.29

以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

以其中\xe4为例,0xe4对应十进制数位228,对应二进制为1110 0100,八位一个字节。即encode让变量一个字节一个字节的显示。

 

我们从网络或磁盘上读取字节流,读到的数据就是bytes。 然后要把bytes转换为str。

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

关于encode、decode以及什么时候是unicode,什么时候是ascii、utf-8,可以这么理解:在内存里是str,是unicode,是字母是中文等。在传输时,是bytes,是作为字母的bytes(因为一个字母占一个字节,一个\xe4也是一个字节),是十六进制表示的bytes。

 

占位符:%d→整数    %s→字符串    %f→浮点数    %x→十六进制整数

 

转载于:https://www.cnblogs.com/inspiring26/p/5822371.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值