当前位置:编程学习 > JAVA >>

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 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,