日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python字符与字节新编

發布時間:2025/3/20 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python字符与字节新编 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字符

字符是一個信息單位,簡單來講就是一個字母、數字、標點符號、漢字等。

字符的最佳定義是Unicode字符:

它是一個全球化的標準,能表示世界上所有語言的字符。Unicode字符的標識(碼位)是以4~6個十六進制數字表示的,并且加前綴U+。

字節

字節是計算機信息計量單位,一個字節代表八個比特,存儲的數值范圍為0~255。

字節跳動(ByteDance)互聯網公司的字節就是這個字節。

字節是機器的,字符是人類的。

把人類字符轉換為機器字節時使用的算法叫做編碼,反之叫做解碼。

算法不同,字節與字符的關系也不同:

bytes和bytearray

字節實際上是個二進制序列。不可變bytes類型和可變bytearray類型是用來存儲二進制序列的,它們的示例如下:

''' Python學習交流,免費公開課,免費資料, 免費答疑,系統學習加QQ群:579817333 ''' >>> cafe = bytes("café", encoding="utf_8") >>> cafe b'caf\xc3\xa9' >>> cafe[0] 99 >>> cafe[:1] b'c' >>> cafe_arr = bytearray(cafe) >>> cafe_arr bytearray(b'caf\xc3\xa9') >>> cafe_arr[-1:] bytearray(b'\xa9')

特別的是cafe[0]返回了整數,cafe[:1]返回了二進制序列,這是因為s[0] == s[:1]只對str類型成立,而對于其他類型來說,s[i]返回一個元素,s[i:i+1]返回一個相同類型的序列。

二進制序列實際上是整數序列。它們的字面量表示法包含ASCII字符(ASCII只能表示英文體系的字符),比如cafe的b’caf\xc3\xa9’,具體規則是:

  • 從空格到~的字符直接使用ASCII字符
  • 制表符\t、換行符\n、回車符\r、轉義符\
  • 其他字符用十六進制轉義序列,比如\x00空字節

構建bytes和bytearray對象的方式有以下幾種:

  • 一個str對象和一個encoding關鍵字參數
  • 一個可迭代對象,數值在0~255
  • 一個實現了緩沖協議的對象,如bytes、bytearray、memoryview、array.array

memoryview和struct

memoryview允許在二進制數據結構之間共享內存,struct能從序列中提取結構化信息。

示例如下,提取一個GIF圖像的寬度和高度:

import structwith open("filter.gif", "rb") as fp:img = memoryview(fp.read())# 這里不會復制字節序列,因為用的memoryview header = img[:10] print(bytes(header)) # b'GIF89a+\x02\xe6\x00'# <是小字節序,3s3s是兩個3字節序列,HH是兩個16位二進制整數 # 類型、版本、寬度、高度 struct.unpack("<3s3sHH", header) # (b'GIF', b'89a', 555, 230)# 刪除引用,釋放memoryview實例所占的內存 del header del img

小結

本文介紹了字符和字節的概念以及它們之間的關系,一個字符對應一個或多個字節。字符是人類的,字節是機器的,編碼就是人類字符轉換為機器字節,反之叫做解碼。然后分別介紹了二進制序列的類型bytes和bytearray,和二進制序列的工具memoryview和struct。

總結

以上是生活随笔為你收集整理的Python字符与字节新编的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。