一、字节串和字节数组
字节串(也叫字节序列)bytes
作用:
存储以字节为单位的数据
说明:
字节串是不可改变的序列
字节是0~255之之间的整数
传输速率:BPS bit per second 每秒钟可以发出的位数
MB:byte
1byte == 8bit
流量是什么:100MBPS 意思是一秒钟内有100M个位发出去(二进制数)
比如网络上发送一个字母‘A’,我们知道这些其实都是计算机存储的图片,真正给网络中发出去二进制数字,在数字电路上对应的是高/低电平来表示。
‘A’ : 0100 0001
字节串:用来存字节的,计算机中存储的单位就是以B位单位的,可以存储一切的东西
创建空字节串的字面值:
b’’
b""
b’’’’’’
b""""""
创建非空的字节串字面值:
B = b’hello’ #存有五个字节的字节串
B = b"hello"
B = b’’‘hello’’’
B = b""“hello”""
B = b"ABC\n123"
B = b’\x41\x42’
str:村的都是编码
bytes:存的都是对应的字节 0~255范围内的数
q = b''
w = b'hello'
e = b"python"
r = b""""world"""
t = "hello\nworld"
print(q,w,e,r,t)
执行结果:
b'' b'hello' b'python' b'"world' hello
world
字节串的构造函数 bytes
bytes():生成一个空的字节串,等同于b""
bytes(整数可迭代对象):用可迭代对象初始化一个字符串
bytes(整数n):生成n个值为0的字节串
bytes(字符串,encoding = ‘utf-8’):用字符串的转换编码生成一个字符串
print(bytes("hello",'utf-8'))
b'hello'
**字节串的运算:**和字符串基本一样
+ += * *=
< <= > >= == !=
in/not in
索引和切片:字节串是不可变的,所以不能用索引和切片赋值改变原来的串
用于序列的函数:
len max min sum any all
字节串的方法:
help(bytes) 这里就不一一列出了
bytes和str的区别:
bytes 存储字节(0~255):可以存储任意信息
str 存储字符(unicode值):一般保存文字等信息
bytes 与 str转换:
str -------->编码------>bytes
b = s.encode(encoding = ‘utf-8’)
bytes ------->解码------->str
s = b.decode(encoding = ‘utf-8’)
二、字节数组:可变的字节串 bytearray
创建函数:
bytearray()创建空的字节串
bytearray(整数)
bytearray(整型可迭代对象)
bytearray(字符串,encode = ‘utf-8’)
操作:同上,不同的是字节数组可以通过索引和切片来修改原数组的值,规则同列表
练习:打印99乘法表:
for i in range(1,10):
for j in range(1,i+1):
print("%dx%d=%d" % (j,i,j*i),end = ' ')
print()
执行结果:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81