1.  
  2. 主页
  3.  / 
  4. Python基础到高级
  5.  / 
  6. 字符串
  7.  / 
  8. bytes

bytes

这一篇说的就是Python 2 和Python 3 最大的区别了

字符串与bytes

str是文本序列

bytes是字节序列

在Linux Python 3 中默认是使用utf-8的

编码的解释

  • 文本是有编码的(utf-8, gbk, GB18030等)
  • 字节没有编码这种说法
  • 文本的编码是指字符如何使用字节来表示

一、bytes

1. encode

小例子 1

下例子 2

尝试将bytes转十进制和二进制

2. decode

同样,encode可以将string变成bytes格式的数据,也有方法也可以将bytes数据变成string的

bytes的定义

bytes的操作,除了encode外,str操作都有对应bytes的版本,但是传入参数也必须是bytes

bytes新增的几个操作

为什么在Python3中要将bytes和str区分出来呢,我想如果用过Python的人,或多或少的都会遇到过乱码问题吧,很不好解决,因为现在的程序都是跨网络的,而且各个平台的编码都不一定都相同,例如windows给Linux发送了一段数据,声明这是gbk编码的数据,而Linux接收的数据又要求是utf-8的,这样的情况就是出现乱码的现象,其实socket传递的数据都是bytes类型的,而bytes是没有编码这一说的, 只要我们双方遵守一个规范的话,这样的话,能很好的解码bytes就不会出现Python乱码的问题。

二、bytearray

bytearray 是bytes的可变版本

str和bytes是不可变的

bytearray的操作

bytearray为什么需要一个可变的版本?

相对于bytes来说,多了insert, append, extend, pop, remove, clear, reverse这些方法

并且bytearray是可以对索引进行操作的

bytearray的参数必须是int,因为bytearray操作的是单个字节

python没有byte类型,但是byte可以使用int来表示,因此bytearray的参数必须是int,而且参数是有范围的,只能是0 ~ 256

0 ~ 256 是8位无符号整数

这篇文章对您有用吗?

我们要如何帮助您?

发表评论

邮箱地址不会被公开。 必填项已用*标注