问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python 怎样读取visual c++二进制文件格式

发布网友 发布时间:2022-05-06 18:41

我来回答

1个回答

热心网友 时间:2022-04-18 10:08

1.python 二进制文件的读写
只讨论二进制文件的读写。
以二进制的形式打开文件
with open(filename , 'wb') as fd :
#do with fd
fd.write(strobject)#二进制strobject写入文件
fd.read(byte_len)#读取byte_len字节数据
wb:表示以二进制写的方式打开文件
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\n");
FILE * fid = fopen(filename,"rb");
if(!fid){
perror("open file error \n");
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\n",i,f,d,l);
printf( "================printf====================\n");
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 宫外孕用试纸能试出来吗 宫外孕用早孕试纸能测出来吗? 豆角土豆炒火腿怎么做好吃 用自信,努力,成功编一个故事的作文500字 火腿炒豆角的做法步骤图,火腿炒豆角怎么做 豆角炒火腿肠是怎么做的 关于探险家的故事(500字左右) 《桃花源记》停数日辞去辞去中的去古今义分别是什么意思? 关于漫话探险的范文500字别抄袭 旦辞爷娘去 辞的古今异义 500字探险家的故事 (作文) 辞可以组哪些词 意思是什么 辞职的辞的意思 求五年级阅读日记,300字,不懂写。 在古代汉语中,语、辞、来、引、匠的本义或最早意义是什么 蒙辞以军中多务的辞古意今意 急!!!求一篇500字的作文! 题目北极探险,时间仲夏之夜,地点北极,人物:地质、气象学家各一名, 文言文中辞字的意思 带原句 紧急求一篇500字左右作文!以探险为话题,题目自拟,题材字数不限,尽量... 辞去中辞的古义今义 请教一下火腿芸豆的家常做法? 宫外孕能用测孕纸测出来吗? 豆角火腿肠怎么做好吃 如何能够使用python3读取二进制的.bin文件 有个奶字的仓鼠名字 c#写的二进制文件怎么用python读取? oracle中的reference跟references有何不同 qq怎么查退出的群 蜂蛹是食用农产品吗? 有一个人建了个游戏微信群,然后已每天多少钱的方式让你把给他打游戏这? 蜜蜂蛹可以和猪肝一起煮粥吗? 蜜蜂蛹的汁液可以饮用吗 徽信没添加,就加入黑名单了,移出就找不到了,怎样才能找回在电脑上可以找回吗 考生单位对毕业生的思想品德鉴定 范文 微信信把另一方加入黑名单或删除他能够再投诉我吗 女朋友发朋友圈说,不要嫌弃她天天发广告,做业务就是这样的,广告推广也是一种推广,该怎样评论,幽默点 关于讽刺朋友圈广告太多的笑话 如何评论朋友圈广告,能让我看起来像个真土豪 网名沙雕透着可爱 在Excel 2003的打印页面中,增加页眉和页脚的操作是___。