一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存储和传输。bytes是byte的序列,而str是unicode的序列。

str类型:

 >>> s = u'你好'
>>> s
'你好'
>>> type(s)
<class 'str'>

bytes类型:

 >>> b = b'abc'
>>> b
b'abc'
>>> type(b)
<class 'bytes'>

二、str和bytes之间的转换关系:str-->encode()-->bytes-->decode()-->str

转换方式一:encode(),decode()

 >>> a = u'你好'
>>> b = a.encode('utf-8')
>>> b
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> type(b)
<class 'bytes'>
>>> new_a = b.decode('utf-8')
>>> new_a
'你好'
>>> type(new_a)
<class 'str'>

转换方式二:bytes(),str()

 >>> a = u'你好'
>>> b= bytes(a, encoding='utf-8')
>>> b
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> type(b)
<class 'bytes'>
>>> new_a = str(b, encoding='utf-8')
>>> new_a
'你好'
>>> type(new_a)
<class 'str'>

三、bytearray类型

bytearray类是range 0 < = x < 256的一个可变序列。

可选的源参数可以用几种不同的方式来初始化数组:

  • 如果它是一个字符串,那么您还必须给出编码(以及可选的错误)参数;bytearray()然后使用str.encode()将字符串转换为字节。
  • 如果它是一个整数,那么数组将具有这个大小,并将用null字节初始化。
  • 如果它是符合缓冲区接口的对象,则将使用对象的只读缓冲区来初始化字节数组。
  • 如果它是可迭代的,那么它必须是range 0 < = x < 256的整数的迭代,它被用作数组的初始内容
  • 如果没有参数,则创建一个大小为0的数组。

当源参数是一个字符串时:

 >>> b = bytearray(u'你好', encoding='utf-8')
>>> b
bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')
>>> type(b)
<class 'bytearray'>

当源参数是一个整数时:

 >>> b = bytearray(5)
>>> b
bytearray(b'\x00\x00\x00\x00\x00')
>>> type(b)
<class 'bytearray'>

当源参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256:

 >>> b = bytearray([1, 2, 3, 4, 255])
>>> b
bytearray(b'\x01\x02\x03\x04\xff')
>>> type(b)
<class 'bytearray'

四、bytes和bytearray区别

bytes是不可变的,同str。bytearray是可变的,同list。

 >>> b = bytearray()
>>> b
bytearray(b'')
>>> b.append(10)
>>> b
bytearray(b'\n')
>>> b.append(100)
>>> b
bytearray(b'\nd')
>>> b.remove(100)
>>> b
bytearray(b'\n')
>>> b.insert(0, 150)
>>> b
bytearray(b'\x96\n')
>>> b.extend([1, 3, 5])
>>> b
bytearray(b'\x96\n\x01\x03\x05')
>>> b.pop(2)
1
>>> b
bytearray(b'\x96\n\x03\x05')
>>> b.reverse()
>>> b
bytearray(b'\x05\x03\n\x96')
>>> b.clear()
>>> b
bytearray(b'')

五、bytes和 bytearray转换

 >>> b = b'abcdef'
>>> bay = bytearray(b)
>>> bay
bytearray(b'abcdef')
>>> b = bytes(bay)
>>> b
b'abcdef'

六、bytearray和str转换

 >>> a = 'abcdef'
>>> b = bytearray(a, encoding='utf-8')
>>> b
bytearray(b'abcdef')
>>> a = b.decode(encoding='utf-8')
>>> a
'abcdef'

python string类型 bytes类型 bytearray类型的更多相关文章

  1. python中的bytes和str类型

    经过一上午的查找资料.大概理清楚了bytes类型和str类型的区别. bytes类型和str类型在呈现形式有相同之处,如果你print一个bytes类型的变量,会打印一个用b开头,用单引号括起来的序列 ...

  2. python--数据类型bytes

    在Python3以后,字符串和bytes类型彻底分开了.字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的. bytes数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样 ...

  3. python bytes和bytearray、编码和解码

    str.bytes和bytearray简介 str是字符数据,bytes和bytearray是字节数据.它们都是序列,可以进行迭代遍历.str和bytes是不可变序列,bytearray是可变序列,可 ...

  4. Python 3中bytes和str的分别

    最近把一段py2的代码转换到py3的代码,结果运行到向socket中写数据的代码部分出现了'str' does not support the buffer interface这样一个错误. 一番搜索 ...

  5. Python数据类型-7 bytes

    bytes 在Python3以后,字符串和bytes类型彻底分开了.字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的. bytes数据类型在所有的操作和使用甚至内置方法上和字符串数据 ...

  6. 译文:二进制序列类型 --- bytes, bytearray

    在进行一些内置函数调用时,会发现bytes类型的参数或返回值,这个类型老猿前面没有介绍过,在此就不单独介绍了,直接从Python官网的内容用翻译软件翻译过来稍微修改. 操作二进制数据的核心内置类型是 ...

  7. Python str 与 bytes 类型(Python2/3 对 str 的处理)

    本文均在 Python 3 下测试通过,python 2.x 会略有不同. 1. str/bytes >> s = '123' >> type(s) str >> ...

  8. python字典转bytes类型字典

    python字典转bytes类型字典import base64 import json 1. a={"Vod":{"userData":"{}&quo ...

  9. Python中的不可变对象类型与可变对象类型

    https://blog.csdn.net/answer3lin/article/details/86430074 其实各个标准资料中没有说明Python有值类型和引用类型的分类,这个分类一般是C++ ...

随机推荐

  1. uva 11488 - Hyper Prefix Sets(字典树)

    H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...

  2. 很不错的js特效

    这里有好多的js特效:http://www.jsfoot.com/jquery/images/qh/ jquery图片特效 jquery幻灯片 .... 有什么js需要可以到这里来下载:http:// ...

  3. 软件系统架构 https://www.lanhusoft.com/Article/349.html

    跟蓝狐学习Nop--NopCommerce源码架构详解专题目录 Posted By : 蓝狐 Updated On : 2018-04-16 14:46 我们承接以下nop相关的业务,欢迎联系我们. ...

  4. 记录魅族m1note编译TWRP recovery 3.1.0-0,包括mtk机型的处理方法

    1.安装64位linux系统,我用的是deepin os 15.3 2.将系统升级到最新版本 sudo apt-get update && sudo apt-get upgrade 3 ...

  5. sanic官方文档解析之路由

    1,路由,路由相当于一个网址的地址,来确定网址的位置和唯一性 当http://server.url/被允许访问服务器,当最后的"/"通过路由匹配到了业务逻辑处理的函数,将会返回一个 ...

  6. dubbo配置指南

    dubbo配置指南 SLA配置在此完成!Service Layer Agreement ApplicationConfig 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者. Regist ...

  7. Flume接收器组的指数退避上限

    指数退避 agent.sinkgroups.sg1.sinks=k1,k2,k3agent.sinkgroups.sg1.processor.type=failoveragent.sinkgroups ...

  8. jQuery整理笔记九----功能性表格开发

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/hai_cheng001/article/details/27536965 演示样例中用到的一些图片. ...

  9. setTimeout 传递的方法

    function waitExe(param){ if(time < 20){ time ++; $("#content").html(time); var self=thi ...

  10. local_irq_disable

    local_irq_disable 仅仅是 设置 当前CPU 的中断屏蔽位 disable_irq 是禁用 全部cpu 中断(只是当前irq) 如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通 ...