永发信息网

浅谈二进制文件读写和文本文件读写的区别

答案:1  悬赏:40  手机版
解决时间 2021-12-02 01:04
浅谈二进制文件读写和文本文件读写的区别
最佳答案
从存储方式来说,文件在磁盘上的存储方式都是二进制形式,所以,文本文件其实也应该算二进制文件。那么他们的区别呢,各自的优缺点呢?不急,我慢慢道来。

先从他们的区别来说,虽然都是二进制文件,但是二进制代表的意思不一样。打个比方,一个人,我们可以叫他的大名,可以叫他的小名,但其实都是代表这个人。
二进制读写是将内存里面的数据直接读写入文本中,而文本呢,则是将数据先转换成了字符串,再写入到文本中。下面我用个例子来说明。
我们定义了一个结构体,表示一个学生信息,我们打算把学生的信息分别用二进制和文本的方式写入到文件中。

struct Student
{
int num;
char name[20];
float score;
};
我们定义两个方法,分别表示内存写入和文本写入

//使用二进制写入
void write_to_binary_file()
{
struct Student stdu;
stdu.num = 111;
sprintf_s(stdu.name,20,"%s","shine");
stdu.score = 80.0f;
fstream binary_file("test1.dat",ios::out|ios::binary|ios::app); //此处省略文件是否打开失败的判断
binary_file.write((char *)&stdu,sizeof(struct Student));//二进制写入的方式
binary_file.close();
}
//文本格式写入
void write_to_text_file()
{
struct Student stdu;
stdu.num = 111;
sprintf_s(stdu.name,20,"%s","shine");
stdu.score = 80.0f;
FILE *fp = fopen("test2.dat","a+"); //此处省略文件是否打开失败的判断
fprintf(fp,"%d%s%f",stdu.num,stdu.name,stdu.score); //将数据转换成字符串(字符串的格式可以自己定义)
fclose(fp);
}
//MAIN函数调用前面两个方法
int _tmain(int argc, _TCHAR* argv[])
{
write_to_binary_file();
write_to_text_file();

return 0;
}
我们来看下,文件里面的格式
2进制文件
文本文件
2
进制文件里面将111编码成6F,1个字节,这刚好是111的16进制表示,而文本文件中则写成31,31,31用了3个字节,表示111。73
68 69 6E 65 表示shine,之后2进制文件里是几个连续的FE,而文本文件中是38
30......文本文件将浮点数80.000000用了38(表示8) 30(表示0) 2E(表示.)
30(表示0) 30(表示0) 30(表示0) 30(表示0) 30(表示0) 30(表示0),二进制文件用了4个字节表示浮
点数00 00 A0 42
通过这里我们可以初见端倪了,二进制将数据在内存中的样子原封不动的搬到文件中,文本格式则是将每一个数
据转换成字符写入到文件中,他们在大小上,布局上都有着区别。由此可以看出,2进制文件可以从读出来直接用,但是文本文件还多一个“翻译”的过程,因此2
进制文件的可移植性好。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如图中符合安全用电的要求是A.湿手拔插头B.用
心的无私天地广这句话是谁说的
写出3个个位上的数和位上的数的和是10
用黑豆姜片土豆熬水洗头能变黑么
vivo y67前置柔光灯怎么用
一个学妹与一个学姐关系特别好,她们经常在一
dreamweaver cs5的div样式内边距在哪里? css
大多数自然资源形成于很久以前的英文
请问英特尔q83和amd740哪个强悍点?
情满三世,与君言欢把酒,策马天涯!请对上联
最近想开始基金定投。问:中国银行有网银能不
俗话说小时偷针,长大偷金!谈谈你对句话的认
园的半径6米1,请问园的面积是多少?
电脑一打开屏幕上就显示输入信号超出范围,调
第八代英特尔03 酷睿64 i7-8550u 怎么样
推荐资讯
为什么淘宝上选择凭证说请求不成功
小旱龟怎么养啊?
桑树和蚕读后感三十字
办理母子关系公证要什么材料
外地人在太仓浏河买房 能房贷吗 需要什么条件
祁阳至广州高铁
历史上唯一经历了七代同堂的皇帝 你们绝对想
请高手回答一下,我的手机型号是广信ef92的!
发垂颡眉是什么意思?
简述巴金创作的前后期变化
多元家居保洁地址好找么,我有些事要过去,
九只尾兽加起来可以打败十尾么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?