python數(shù)據(jù)類型——bytes和bytearray

bytes和 bytearray

bytes:可以看作是一組二進(jìn)制數(shù)值(0-255) 的 str 序列
bytearray:可以看作是一組二進(jìn)制數(shù)值(0-255) 的 list 序列

十年的寶清網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整寶清建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“寶清網(wǎng)站設(shè)計(jì)”,“寶清網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

bytes類型

字符串轉(zhuǎn)bytes類型

# 將返回 bytes 類型 b" abc "
bs1 = bytes("abc","utf-8")
# 可以使用字符的16進(jìn)制字符表達(dá)形式
bs2 = bytes('\x61\x62\x63',"utf-8")
# 直接對(duì)字符進(jìn)行編碼成二進(jìn)制形式
bs2 = "abc".encode()

# 16進(jìn)制字符轉(zhuǎn)為bytes類型
b1 = bytes.fromhex("61 62 63")  #  ==>   b"abc"   "61,62"是兩位16進(jìn)制數(shù)組合,該值不能超過 7F ,否則無法對(duì)應(yīng)ASCII表中字符
b1.hex()                 # ===>  '616263'   ASCII碼中abc字符對(duì)應(yīng)的16進(jìn)制數(shù)組成的字符串,上面函數(shù)的逆運(yùn)算

# bytes 類型中單個(gè)元素可以看做是一個(gè)10進(jìn)制數(shù)值類型
print( b1[0] )  # ==>  10進(jìn)制數(shù),97

數(shù)值轉(zhuǎn)化為bytes類型
前面已經(jīng)說過,bytes 對(duì)象可以看做是一組二進(jìn)制數(shù)值(0-255)的字符串,所以可以根據(jù)數(shù)值創(chuàng)建bytes 對(duì)象

# 傳入數(shù)值類型可迭代對(duì)象
b1 = bytes(range(97,100))               #  ==> b' abc '
b2 = bytes( [97,98,99] )                   #  ==> b' abc '
b3 = bytes( [97] )                             #  ==> b' a '

# 直接傳入10進(jìn)制數(shù)值對(duì)象而不是可迭代對(duì)象,將會(huì)生成對(duì)應(yīng)數(shù)值字節(jié)的空bytes
b4 = bytes(3)         #  b'\x00\x00\x00'   三個(gè)空字符的 bytes 

# 通過數(shù)值轉(zhuǎn)化將8進(jìn)制,16進(jìn)制數(shù)字 生成bytes對(duì)象
b5 = bytes( [ int("61",16) ] )    #16進(jìn)制  == > 10 進(jìn)制 ==> bytes ==>b"a"
b6 = bytes( [ int("61", 8) ] )     # 8進(jìn)制  == > 10 進(jìn)制 ==> bytes  ==>b"1"

#  也可利用bytes 對(duì)象轉(zhuǎn)化為 10 進(jìn)制 數(shù)值
num = int.from_bytes(b"abc","big")         # "abc"對(duì)應(yīng)的三個(gè)字節(jié)拼接在一起作為一個(gè)二進(jìn)制數(shù),并計(jì)算為10進(jìn)制數(shù)輸出
num                    #    ===>   6382179

bytes 對(duì)象可以可以理解為字節(jié)的 str 類型,序列一旦創(chuàng)建不可變,同時(shí),字符串類型可以使用的方法,基本適用于bytes對(duì)象。
例如

m = bytes("abc","utf-8")
n = bytearray(" def ","utf-8")
bs = m + n             # bytes 類型的拼接,生成新的bytes對(duì)象
bs                          # ===> b"abcdef" 

m.append(100)              # ==> 通過 10進(jìn)制數(shù),添加 b" d ", 單個(gè)值使用整型數(shù)值進(jìn)行傳入
m.extend(b"efg")           # ==> 擴(kuò)展bytearray對(duì)象使用 bytes或bytearray類型的可迭代對(duì)象 

其他字符串方法類似于str ,可查看 str 類型使用方法

bytearray類型

bytearray 可以看作是一組數(shù)值(0-256)(二進(jìn)制) 的 list 序列,意味著bytearray 中的單個(gè)元素是可變的

ba1 = bytearray(range(97,103))
ba1                                  #  bytearay對(duì)象,==>  bytearray(b"abcdef" )
ba1[0]                              #   ==>  97  (integer)
ba1[1 :2]                          #  切片 ==> bytearray(b'bcd')

# 賦值,可變bytearray
ba[ 4 ] = 122                    #  122整型對(duì)應(yīng)字符"z",   ==> b"e" --> b"z"
ba                                    #   bytearray(b"abcdzf" )
ba1[1:4] = b"xyz"             #  切片賦值,替換ba1[1:4]的內(nèi)容, 只有bytes 或bytearray 序列可賦值
ba1                                  #  bytearray(b'axyzef')

bytearay 對(duì)象類似于 一個(gè)字節(jié) 的 list 對(duì)象,所以可以使用list 的大部分方法,注意的是,list 對(duì)象是對(duì)字符層面的操作,bytes 和 bytearay 則需要操作的是字節(jié)層面的元素,或者整型(因?yàn)?-255的整型值可以直接使用二進(jìn)制形式存入內(nèi)存的單個(gè)字節(jié)中,也屬于單個(gè)字節(jié)操作)

進(jìn)制轉(zhuǎn)化

bytes對(duì)象生成時(shí)可以根據(jù)16進(jìn)制字符串(無前綴)或者10進(jìn)制 數(shù)值,可以使用以下方法轉(zhuǎn)換各個(gè)進(jìn)制字符

# 內(nèi)置函數(shù)
chr(97)      #    ==> "a"
ord("a")     #    ==> 97

#帶前綴 0x 
format(97,"#x")                                   # ==> '0x61'
format(97,"#o")                                   # 8進(jìn)制字符
format(97,"#b")                                   # 2進(jìn)制字符
#不帶前綴
format(97,"X")                                    # ==> int ==> hex_str
format(97,"o")                                    # ==> int ==> oct_str
format(97,"b")                                    # ==> int ==> bin_str

# 3.6+版本使用方法
# f'{255:X}' 和 f'{255:#X}'                   ===> " FF "  和 "0xFF"

# 無前綴
"%x"%10                                     # ==> 'a'
"%o"%10                                     # ==> '12'
# 帶前綴                               
"%#x"%10                                     # ==> '0xa'
"%#o"%10                                     # ==> '0o12'

新聞名稱:python數(shù)據(jù)類型——bytes和bytearray
文章網(wǎng)址:http://bm7419.com/article12/pschdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作、響應(yīng)式網(wǎng)站定制開發(fā)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)