bytes
- 不可變字節(jié)序列
bytearray
字節(jié)數(shù)組
可變
字符串與bytes
- 字符串是字符組成的有序序列,字符可以使用編碼來理解
- bytes是字節(jié)組成的有序的不可變序列
- bytearray是字節(jié)組成的有序的可變序列
編碼與解碼
-
字符串按照不同的字符集編碼encode 返回字節(jié)序列bytes
- encode(encoding='utf-8'删壮,errors='strict') -> bytes
-
字節(jié)序列按照不同的字符集解碼decode返回字符串
- bytes.decode(encoding='utf-8',errors='strict') -> str
- bytearray.decode(encoding='utf-8',errors='strict') -> str
bytes定義
十六進制的字符串表示方法是“\x”,十六進制數(shù)的時候用“0x”表示
bytes() -> 空bytes
bytes(int) -> 指定字節(jié)的bytes付枫,被0填充
-
bytes(iterable_of_ints) -> bytes[0,255]的int組成的可迭代對象
- >>> bytes(range(0,5))
- ? b'\x00\x01\x02\x03\x04'
bytes(string,encoding[,errors]) -> bytes等價于string.encode()
bytes(bytes_or_buffer) -> immutable copy of bytes_of_buffer 從一個字節(jié)序列或者buffer復(fù)制出一個新的不可變的bytes對象
-
使用b前綴定義
只允許基本ASCII使用字符形式b'abc9'
-
使用16進制表示b'\x41\x61'
- >>> b'\x41\x61'.decode()
- ? 'Aa'
bytes操作
- 和str類型類似伦泥,都是不可變類型,所以很多都是一樣氧腰。只不過bytes的方法,輸入的是bytes朦拖,輸出是bytes
bytes
b'abcdef'.replace(b'f',b'k')
b'abc'.find(b'b')
-
類方法bytes.formhex(string)
- string必須是2個字符的16 進制的形式,'6162 6a 6b'厌衔,空格將被忽略
- bytes.fromhex('6162 09 6a 6b00')
-
hex()
返回16進制表示的字符串
'abc'.encode().hex()
-
索引
- b'abcdef'[2] 返回該字節(jié)對應(yīng)的數(shù)璧帝,int類型
bytearray 定義
- bytearray() ->空bytearray
- bytearray(int) -> 指定字節(jié)的bytearray, 被0填充
- bytearray(iterable_of_ints) ->bytearray[0,255]的int組成的可迭代對象
- bytearray(string,encoding[,errors]) -> bytearray近似string.encode(),不過返回可變對象
- bytearray(bytes_or_buffer) 從一個字節(jié)序列或者buffer復(fù)制出一個新的可變bytearray對象
- 注意富寿,b前綴定義的類型是bytes類型
bytearray操作
append(int) 尾部追加一個元素
insert(index,int) 在指定索引位置插入元素
extend(iterable_of_ints) 將一個可迭代的整數(shù)集合追加到當(dāng)前bytearray
pop(index=-1)從指定索引上移除元素睬隶,默認(rèn)從尾部移除
remove(value)找到第一個value移除,找不到拋ValueError異常
注意:上述方法若需要使用int類型页徐,值在[0,255]
clear()清空bytearray
reverse()翻轉(zhuǎn)bytearray苏潜,就地修改
int 和 bytes
-
int.from_bytes(bytes,byteorder)
- 將一個字節(jié)數(shù)組表示成整數(shù)
-
int.to_bytes(leng,byteorder)
- byteorder 字節(jié)序
- 將一個整數(shù)表達成一個指定長度的字節(jié)數(shù)組
>>> i = int.from_bytes(b'abc','big')
>>> i
6382179
>>>
>>> print(i,hex(i))
6382179 0x616263
>>> print(i.to_bytes(3,'big'))
b'abc'
ASCII
ASCII(American Standard Code for Information Interchange,美國信息交換標(biāo)準(zhǔn)代碼)是基于拉丁字母的一套計算機編碼系統(tǒng)变勇。它主要用于顯示現(xiàn)代英語恤左,而其擴展版本EASCII則可以部分支持其他西歐語言,并等同于國際標(biāo)準(zhǔn)ISO/IEC 646贰锁。其中33個字符無法顯示(一些終端提供了擴展赃梧,使得這些字符可顯示為諸如笑臉、撲克牌花式等8-bit符號)豌熄,且這33個字符多數(shù)都已是陳廢的控制字符授嘀。控制字符的用途主要是用來操控已經(jīng)處理過的文字锣险。在33個字符之外的是95個可顯示的字符蹄皱。用鍵盤敲下空白鍵所產(chǎn)生的空白字符也算1個可顯示字符(顯示為空白)涨薪。