昨天在看一篇文章的时候,忽然想起了这个基础性的问题,本身一直对它的区别不是很清楚,因而今天上午研究下了,分享下本身的理解。(对它很清楚的同窗们能够略过此篇文章)
从存储方式来讲,文件在磁盘上的存储方式都是二进制形式,因此,文本文件其实也应该算二进制文件。那么他们的区别呢,各自的优缺点呢?不急,我慢慢道来。
先从他们的区别来讲,虽然都是二进制文件,可是二进制表明的意思不同。打个比方,一我的,咱们能够叫他的大名,能够叫他的小名,但其实都是表明这我的。二进制读写是将内存里面的数据直接读写入文本中,而文本呢,则是将数据先转换成了字符串,再写入到文本中。下面我用个例子来讲明。
咱们定义了一个结构体,表示一个学生信息,咱们打算把学生的信息分别用二进制和文本的方式写入到文件中。html
咱们定义两个方法,分别表示内存写入和文本写入ios
咱们来看下,文件里面的格式 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进制文件的可移植性好。app
转自:http://www.cppblog.com/yg2362/archive/2012/07/12/182956.html函数