中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python數據類型 ——bytes 和 bytearray

發布時間:2020-05-15 02:14:09 來源:網絡 閱讀:1557 作者:wx5b87e6d52af84 欄目:編程語言

bytes和 bytearray

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

bytes類型

字符串轉bytes類型

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

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

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

數值轉化為bytes類型
前面已經說過,bytes 對象可以看做是一組二進制數值(0-255)的字符串,所以可以根據數值創建bytes 對象

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

# 直接傳入10進制數值對象而不是可迭代對象,將會生成對應數值字節的空bytes
b4 = bytes(3)         #  b'\x00\x00\x00'   三個空字符的 bytes 

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

#  也可利用bytes 對象轉化為 10 進制 數值
num = int.from_bytes(b"abc","big")         # "abc"對應的三個字節拼接在一起作為一個二進制數,并計算為10進制數輸出
num                    #    ===>   6382179

bytes 對象可以可以理解為字節的 str 類型,序列一旦創建不可變,同時,字符串類型可以使用的方法,基本適用于bytes對象。
例如

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

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

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

bytearray類型

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

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

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

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

進制轉化

bytes對象生成時可以根據16進制字符串(無前綴)或者10進制 數值,可以使用以下方法轉換各個進制字符

# 內置函數
chr(97)      #    ==> "a"
ord("a")     #    ==> 97

#帶前綴 0x 
format(97,"#x")                                   # ==> '0x61'
format(97,"#o")                                   # 8進制字符
format(97,"#b")                                   # 2進制字符
#不帶前綴
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'
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东阳市| 瑞安市| 泰兴市| 莱州市| 莎车县| 内江市| 肇庆市| 万盛区| 宁海县| 松原市| 甘肃省| 舟曲县| 荣成市| 察隅县| 镇赉县| 中西区| 章丘市| 华坪县| 遂昌县| 德安县| 郓城县| 中方县| 会同县| 鄂温| 卓尼县| 房产| 垫江县| 青河县| 三江| 赫章县| 巴中市| 安陆市| 龙川县| 华容县| 双辽市| 白玉县| 舒兰市| 贵德县| 公安县| 温泉县| 庆云县|