Python處理二進位製流(二)

2021-10-07 09:26:03 字數 1509 閱讀 6097

將生成stuct字串封裝為乙個函式data2struct,廢話不多數,如下:

name_bin = name.encode('utf-8') #轉二進位制

img = cv2.imread(name) #ndarray型別,按bgr順序排序,uint8型別

img_bin = img.tostring() #bytes型別 或者用tobytes()

namelen_uchar = len(name_bin) # b 1位元組

width_ushort = img.shape[1] # h 2位元組

height_ushort = img.shape[0] # h 2位元組

datalen_uint = len(img_bin) # i 4 位元組

#產生64位元組的字串, 字串填充檔名

data = np.zeros(shape=(64),dtype='uint8')

data[0:namelen_uchar] = np.fromstring(name, dtype='uint8')

name_bytes = data.tobytes()

st,args = data2struct((name_bytes, 's'),(width_ushort,'h'), (height_ushort,'h'), (datalen_uint,'i'), (img_bin,'s'))

pk = struct.pack(st, *args)

#struct解包

#將二進位制位元組流轉為numpy格式(ndarry)

img_recv = np.frombuffer(img_bin, dtype=np.uint8).reshape([height_ushort, width_ushort, 3])

cv2.imwrite(name, img_recv)

Buffered流 二進位制

bufferedreader類是reader類的子類 bufferedreader類帶有緩衝區按行讀取內容的readline 方法 reader類常用方法 int read int read byte c read char c,int off,int len void close 子類buffer...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

python處理二進位制資料

處理二進位制資料離不開python的struct模組,struct理解上你可以把它理解為c語言的結構體,使用該模組的pack和unpack方法,可以很容易的把二進位制資料轉換為常用的型別資料,如整型 字元型等 結構體如下 struct header 將二進位制資料流解析為常用的資料型別,例如 pyt...