老师的代码中只写了字节的复制,为什么在文件中可以直接显示字符串呢?
还是数据编码及存储的原理还没有搞清楚.^_^ 首先,我们用键盘写文件时,是以输入码进行输入的,比如拼音类的输入法,或者是五笔字形输入法,输入之后,它会把你要输入进去的字符保存成机内码,也就是0 1所组成的机内码,因为计算机只认识这种01 编码的二进制码. 当然对西方字符的话,相对字符少,最常用的ASCII编码规则(8*16的矩阵),已经可以涵盖所有的西文字符. 而对于中文字符,就复杂些,因为光汉字就有成千上万个,所以又需要另外一套编码规则,将所有这些中文字符涵盖进去,说白了,就是给每一个汉字附一个唯一的二进制码.就像上学时的学号,每一个人的学号是唯一的,而且这个学号是没有太大意义的,它就像一个索引或者指针似的,指向它所代表的那个学生,同理,这里的每一个二进制编码也是一样的道理. 以上这是向计算机输入字符时由字符向二进制的转换过程;
输出的过程,其实就是它的反向过程.你是按照哪个编码规则输入的,那么你读取的时候也必须按相同的编码规则去读取,也即解码过程. 还是上面说的,你如果用另外一套编码规则去解码,那么相同的一个字节的编码在另外一套编码规则中所指向的很可能就是另外的一个字符了(除非这两套编码规则是兼容的).
回到你的问题:计算机显示的时候其实已经是默认包含了这个解码的过程.如果不解码,那么我们看到的就是01所组成的二进制串,是没有办法阅读,修改的. 当你面对着一屏幕的010101...时,相信你内心是崩溃的@_@. 而且,我们在写文件时,它是有一个默认的编码规则的,比如gbk,utf-8等,这个信息肯定是包含在文件中的.每个平台都有默认的编码规则.
推荐: <大学计算机基础>中的章节3: 数据在计算机中的表示. 非常基础但是非常重要.^_^
有你们前面的路好走的多。
补充:代码所操作的只是文件在计算机中存储的机内码(0&1)序列,也即字节序列.而查看时,所用的软件,记事本/写字版等等,肯定都是带有这种转换功能的.