bytes,bytearray与str

bytes

bytes对象只负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定

bytes是Python 3中特有的,Python 2 里不区分bytes和str。

python3中:

str 使用encode方法转化为 bytes

bytes通过decode转化为str

>>> a = '人生苦短'

>>> type(a)

<class 'str'>

>>> b = a.encode()

>>> b

b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad'

>>> type(b)

<class 'bytes'>

>>> c = b.decode()

>>> c

'人生苦短'

>>> type(c)

<class 'str'>

 

在Python 2中由于不区分str和bytes所以可以直接通过encode()和decode()方法进行编码解码。

而在Python 3中把两者给分开了这个在使用中需要注意。实际应用中在互联网上是通过二进制进行传输,所以就需要将str转换成bytes进行传输,而在接收中通过decode()解码成我们需要的编码进行处理数据这样不管对方是什么编码而本地是我们使用的编码这样就不会乱码。

bytearray() 方法返回一个新字节数组。

这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。

语法:class bytearray([source[, encoding[, errors]]])

参数:

  • 如果 source 为整数,则返回一个长度为 source 的初始化数组;

bytearray(2)

bytearray(b'\x00\x00')

  • 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;

>>> c = bytearray('中文','utf-8')

>>> type(c)

<class 'bytearray'>

  • 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;

>>> bytearray([1,2,3,4])

bytearray(b'\x01\x02\x03\x04')

>>> bytearray([1,2,3,4,899])

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ValueError: byte must be in range(0, 256)

  • 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
  • 如果没有输入任何参数,默认就是初始化数组为0个元素。

>>> a = bytearray()

>>> a

bytearray(b'')

>>> len(a)

0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值