java二进制数据存储问题
小弟想看下二进制存储的数据结构,就弄了个下面小程序
import java.io.*;
class Erjinzhi{
public static void main(String args[]) throws Exception {
FileWriter myfile=new FileWriter("a.dat");
char i;
for(i=0;i<256;i++) {
myfile.write((char)(i));
myfile.flush();
}
}
}
以上代码主要是想让程序将ASCII码从00到255存到a.dat中,然后用UltraEdit查看。预期结果十六进制应该是00一直到ff,但不看不知道,我的结果是下图:
从00到7f后突然变成3f一段个数后又变成其他的了,不知道是什么原因造成,谁在自己电脑上试试,给小弟指点指点。。
谢谢啦…… --------------------编程问答-------------------- 一个char俩字节,ascii 每个一个字节
--------------------编程问答--------------------
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream("E:\\a.dat");
for (int i = 0; i < 256; out.write(i++));
out.close();
}
经各方面再查了下发现,原因有以下:
1、char是双字节(之前确实受C语言影响认为是单字节了),但为何在第一字节00-7f正常,进入第二个字节就不正常了,是计算机存储高低位造成还是……
2、FileOutputStream是字节流输出这个就没问题,而FileWriter为字符流输出,后面那堆没有水平的乱码就说明了它不按常规出牌而流产了。。
另外字符流到底怎么转的还没弄清楚,还得查查……
补充:Java , Web 开发