python/c/c++バイナリファイル読み書き
1.pythonバイナリファイルの読み書き
バイナリファイルの読み書きのみを議論します.ファイルをバイナリ形式で開く
wb:ファイルrbをバイナリで開くことを示す:ファイルrbをバイナリで読むことを示す
2.進数変換について
structを使用して、バイナリ文字列または対応するデパッケージメタグループにパッケージ化する必要があります.
3.いくつかのデータ型の例を読み書きする
C/C++のデータ型pythonに対応するデータ型とバイトサイズについては、以下のサイトを参照してください.https://docs.python.org/3/library/struct.html#format-characters
4.c++python生成ファイルの読み取りについてテストする
バイナリファイルの読み書きのみを議論します.ファイルをバイナリ形式で開く
with open(filename , 'wb') as fd :
#do with fd
fd.write(strobject)# strobject
fd.read(byte_len)# byte_len
wb:ファイルrbをバイナリで開くことを示す:ファイルrbをバイナリで読むことを示す
2.進数変換について
structを使用して、バイナリ文字列または対応するデパッケージメタグループにパッケージ化する必要があります.
# format , v1,v2,...
byte_objects = struct.pack(format,v1,v2,...)
# format , buffer ,
value_tuple = struct.unpack(format,buffer)
3.いくつかのデータ型の例を読み書きする
#
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に対応するデータ型とバイトサイズについては、以下のサイトを参照してください.https://docs.python.org/3/library/struct.html#format-characters
4.c++python生成ファイルの読み取りについてテストする
/**c++ ifstream**/
void readifstream(const char* filename){
cout << "ifstream " << endl;
ifstream ifs(filename,ifstream::binary);
if(!ifs){
cerr << "open file error " << endl;
exit(0);
}
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){
printf("readFILE
");
FILE * fid = fopen(filename,"rb");
if(!fid){
perror("open file error
");
exit(0);
}
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
",i,f,d,l);
printf( "================printf====================
");
}