python bytes和bytearray、编码和解码

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

bytes和bytearray都能使用str类型的通用函数,比如find()、replace()、islower()等,不能用的是str的格式化操作。所以,如有需要,参考字符串(string)方法整理来获取这些函数的使用方法。

str
str将各个字符组合在一起,以一种不可变序列进行存储。但是在底层它还是一个个的二进制数,是由一个个的字节组成的(也就是byte),只不过python根据指定的字符集编码"强行"将字节序列显示为字符。

byte

在这里插入图片描述

bytearray

在这里插入图片描述

Unicode

在这里插入图片描述
利用bytearray实现string的交换:

def swap(string,m,n):
    b=bytearray(string)#转成bytearray才能按位操作,相当于go []byte
    print type(b)
    print type(b[0])
    print b[0]#97,相当于byte()
    b[m],b[n]=b[n],b[m]
    return str(b)

在这里插入图片描述
python中的编码、解码
上面说了,编码是将字符数据转换成字节数据(raw data),解码是将字节数据转换成字符数据。在Python中字符数据也就是字符串,即str类型,字节数据也就是bytes类型或bytearray类型。

编码时,可以使用字节类型的构造方法bytes()、bytearray()来构造字节,也可以使用str类型的encode()方法来转换。

解码时,可以使用str类型的构造方法str()来构造字符串,也可以使用bytes、bytearray()类型的decode()方法。

另外需要注意的是,编码和解码的过程中都需要指定编码表(字符集),默认采用的是utf-8字符集。

详细

ord()和chr()

  • ord()将字符转成ascii
  • chr()将ascii转回字符
#!/usr/bin/python
# -*- coding:utf-8 -*-
#wnagzhoufeng

#求一组字符串的最长公共前缀如["charlie","chao","charlis"]返回"cha"

def process(list):
    n=len(list[0])
    res=n
    for i in range(1,len(list)):
        t=0
        while ord(list[0][t])^ord(list[i][t])==0:
            t+=1
        res=min(res,t)



    print list[0][0:res]


list=["charlie","chao","charlis"]
print list[0][0].encode()
n=ord(list[0][0])
print "ascii:", n
print "char:",chr(n)

process(list)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值