Python bytearray/bytes/string区别 - Python零基础入门教程
目錄
- 一.字節(jié)與字符的區(qū)別
- 1.字節(jié)概念
- 2.字符概念
- 3.字符串概念
- 4.字節(jié)串概念
- 二.str / bytes / bytearray 區(qū)別
- 三.string 與 bytes / bytearray 相互轉(zhuǎn)換
- 1.string 經(jīng)過編碼 encode 轉(zhuǎn)化成 bytes
- 2.bytes 經(jīng)過解碼 decode 轉(zhuǎn)化成 string
- 四.猜你喜歡
零基礎(chǔ) Python 學(xué)習(xí)路線推薦 : Python 學(xué)習(xí)目錄 >> Python 基礎(chǔ)入門
一.字節(jié)與字符的區(qū)別
在講解 bytearray / bytes / **string **三者的區(qū)別之前,有必要來了解一下字節(jié)和字符的區(qū)別;
1.字節(jié)概念
字節(jié)(Byte )是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲容量的一種計(jì)量單位,作為一個(gè)單位來處理的一個(gè)二進(jìn)制數(shù)字串,是構(gòu)成信息的一個(gè)小單位。最常用的字節(jié)是八位的字節(jié),即它包含八位的二進(jìn)制數(shù);
-
位 ( bit ) 是計(jì)算機(jī) 內(nèi)部數(shù)據(jù) 儲存的最小單位,11001100 是一個(gè)八位二進(jìn)制數(shù);
-
** 字節(jié) ( byte ) 是計(jì)算機(jī)中 數(shù)據(jù)處理 的基本單位,習(xí)慣上用大寫 B 來表示, 1B ( byte , 字節(jié) ) = 8 bit ( 位 ) ;**
1 KB = 1024 B(字節(jié));
1 MB = 1024 KB; (2^10 B)
1 GB = 1024 MB; (2^20 B)
1 TB = 1024 GB; (2^30 B)
2.字符概念
字符 是指計(jì)算機(jī)中使用的字母、數(shù)字、字和符號,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等;
- 一般 utf-8 編碼下,一個(gè)漢字 字符 占用 3 個(gè) 字節(jié);
- 一般 gbk 編碼下,一個(gè)漢字 字符 占用 2 個(gè) 字節(jié);
3.字符串概念
字符串是字符序列,它是一種抽象的概念,不能直接存儲在硬盤 – 字節(jié)串是給計(jì)算機(jī)看的,給計(jì)算機(jī)傳輸或者保存的,在 Python 中,程序中的文本都用字符串表示;
4.字節(jié)串概念
字節(jié)串是字節(jié)序列,它可以直接存儲在硬盤, 字節(jié)串是給計(jì)算機(jī)看的。它們之間的映射被稱為編碼 / 解碼 – 字符串是給人看的,用來操作的;
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個(gè)人博客地址): www.codersrc.com @File:Python bytearray/bytes/string區(qū)別.py @Time:2021/04/30 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""if __name__ == "__main__":# 字符串str 轉(zhuǎn) 字節(jié)bytess = '猿說python'b = s.encode() # 編碼,默認(rèn)的是UTF-8print(b)print(type(b))# 字節(jié)bytes 轉(zhuǎn) 字符串strb = b'\xe7\x8c\xbf\xe8\xaf\xb4python'.decode(encoding='UTF-8') # 解碼print(b)print(type(b))''' 輸出結(jié)果:b'\xe7\x8c\xbf\xe8\xaf\xb4python' <class 'bytes'> 猿說python <class 'str'> '''二.str / bytes / bytearray 區(qū)別
1.str 是字符數(shù)據(jù)(如:文本,給人看的),bytes 和 bytearray 是字節(jié)數(shù)據(jù)(如:二進(jìn)制數(shù)據(jù),給計(jì)算機(jī)看的),它們都是序列,可以進(jìn)行迭代遍歷。
2.str 和 bytes 是不可變序列,通過 str 類型的通用函數(shù),比如 find 、replace 、islower 等函數(shù)修改后實(shí)際上是重新創(chuàng)建了新對象;bytearray 是可變序列,可以原處修改字節(jié)。
3.bytes 和 bytearray 都能使用 str 類型的通用函數(shù),比如 find 、replace 、islower 等,不能用的是 str 的格式化操作。
4.Python 3.x 中默認(rèn) str 是 unicode 格式編碼的,例如 UTF-8 字符集。
三.string 與 bytes / bytearray 相互轉(zhuǎn)換
1.string 經(jīng)過編碼 encode 轉(zhuǎn)化成 bytes
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個(gè)人博客地址): www.codersrc.com @File:Python bytearray/bytes/string區(qū)別.py @Time:2021/04/30 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""if __name__ == "__main__":s = "https://www.codersrc.com"# 將字符串轉(zhuǎn)換為字節(jié)對象b2 = bytes(s, encoding='utf8') # 必須制定編碼格式# print(b2)# 字符串encode將獲得一個(gè)bytes對象b3 = str.encode(s)b4 = s.encode()print(b3)print(type(b3))print(b4)print(type(b4))''' 輸出結(jié)果:b'https://www.codersrc.com' <class 'bytes'> b'https://www.codersrc.com' <class 'bytes'> '''2.bytes 經(jīng)過解碼 decode 轉(zhuǎn)化成 string
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個(gè)人博客地址): www.codersrc.com @File:Python bytearray/bytes/string區(qū)別.py @Time:2021/04/30 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""if __name__ == "__main__":# 字節(jié)對象bb = bytes("python教程-猿說python","utf-8")#方案一:s2 = bytes.decode(b)# 方案二:s3 = b.decode()print(s2)print(s3)''' 輸出結(jié)果:python教程-猿說python python教程-猿說python '''注意:如果 bytes 初始化含有中文的字符串必須設(shè)置編碼格式,否則報(bào)錯(cuò):TypeError: string argument without an encoding
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個(gè)人博客地址): www.codersrc.com @File:Python bytearray/bytes/string區(qū)別.py @Time:2021/04/30 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""b = bytes("猿說python")>>> b = bytes("猿說python") >>> TypeError: string argument without an encoding四.猜你喜歡
未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? Python bytearray/bytes/string 區(qū)別
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Python bytearray/bytes/string区别 - Python零基础入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 指针数组和数组指针区别 - C语
- 下一篇: Python break/continu