python c c 二進位制檔案讀寫

2021-07-24 14:40:10 字數 2579 閱讀 3741

只討論二進位制檔案的讀寫。

以二進位制的形式開啟檔案

with

open(filename , 'wb') as fd :

#do with fd

fd.write(strobject)#二進位制strobject寫入檔案

fd.read(byte_len)#讀取byte_len位元組資料

wb:表示以二進位制的方式開啟檔案

rb:表示以二進位制的方式開啟檔案

需要使用到struct進行打包成二進位制字串或者相應的解包成元組。

#根據format形式,把後面的變數v1,v2,...打包成位元組物件形式

byte_objects = struct.pack(format,v1,v2,...)

#根據format形式,從buffer中解包出資料,返回值的形式是元組

value_tuple = struct.unpack(format,buffer)

#寫入檔案

with open('test.data','wb') as fd:

i = 1

bi = struct.pack('i',i) #'i'表示對int型別進行打包

fd.write(bi)

f = 2.1

bf = struct.pack('f',f) #'f'表示對float型別進行打包

fd.write(bf)

d = 3.1

bd = struct.pack('d',d) #'d'表示對double型別進行打包

fd.write(bd)

l = 4l

bl = struct.pack('l',l)#'l'表示對long型別進行打包

fd.write(bl)

#讀取檔案

with open('test.data','rb') as fd:

byte_len = 4

bi = fd.read(byte_len) #讀取int型別的4個位元組的二進位制資料

print struct.unpack('i',bi) #解壓成原來的int型別

bf = fd.read(byte_len) #讀取float型別的4個位元組的二進位制資料

print struct.unpack('f',bf) #解壓成原來的float型別

byte_len = 8

bd = fd.read(byte_len) #讀取double型別的8個位元組的二進位制資料

print struct.unpack('d',bd) #解壓成原來的double型別

bl = fd.read(byte_len) #讀取long型別的8個位元組的二進位制資料

print struct.unpack('l',bl)#解壓成原來的long型別

關於c/c++裡面的資料型別在python裡面對應的資料型別以及占用的位元組大小,參考下面的**。

/**c++ ifstream**/

void readifstream(const

char* filename)

int i;

float f;

double d;

long l;

ifs.read((char*)&i,sizeof(i));

ifs.read((char*)&f,sizeof(f));

ifs.read((char*)&d,sizeof(d));

ifs.read((char*)&l,sizeof(l));

ifs.close();

cout <<"i="

<< i << " f="

<< f <<" d="

<< d <<" l="

<< l << endl;

cout << "**********====cout********************=="

<< endl;

}/**c file*/

void readfile(const

char* filename)

const

int size = 1;

int i;

float f;

double d;

long l;

fread((char*)&i,sizeof(i),size,fid);

fread((char*)&f,sizeof(f),size,fid);

fread((char*)&d,sizeof(d),size,fid);

fread((char*)&l,sizeof(l),size,fid);

fclose(fid);

printf("i=%d f=%.2f d=%.2lf l=%ld\n",i,f,d,l);

printf( "***************=printf********************\n");

}

二進位制檔案 讀檔案

1.二進位制讀檔案主要是利用流物件呼叫成員函式read 2.函式原型 ifstream read char buffer,int len 引數解釋 字元指標buffer指向記憶體中一段儲存空間,len是讀寫的位元組數 include include includeusing namespace st...

python怎麼讀二進位制檔案?

實際專案中經常遇到讀取二進位制問題,python下讀取二進位制檔案一般用python的檔案開啟讀寫相關函式和struct.1。獲取檔名filename,可用對話方塊,也可以直接手寫 2。開啟檔案,這裡中是開啟,像看書一樣,只是開啟書,還沒有看裡面的內容,可以看,也可以不看 binfile open ...

二進位制檔案

本質上是文字檔案是把檔案資訊先轉化成以字元編碼的ascii碼,再儲存ascii的二進位制 而二進位制檔案是直接把檔案資訊編碼成二進位制儲存。因此在讀取的時候要考慮記憶體中二進位制 應該怎麼樣解釋。二進位制檔案的讀取是是要告訴元素的型別 編碼方式 文字檔案則預設為char型別。文字檔案是一種特殊的二進...