日期:2014-05-20  浏览次数:21015 次

char与int之间的强制类型转换
今天做一个东西,要读取一个文件,然后把读取的内容放到一个byte数组中,然后再根据byte数组,写进一个新文件,但是新文件与原文件不一样
用的方法如下:
File   of   =   "text.jpg ";
byte[]   b   =   new   byte[(int)   of.length()];
oFIS.readFully(b);
//此处把b的内容写入
//oFIS.write(b);     //此时可以正常写入,文件也可以打开
但如果用下面的方法就不行
StringBuffer   s   =   new   StringBuffer();
for(int   i   =   0;i <b.length;i++){
        s.append((char)((int)b[i]));
}
string   str   =   s.toString();
oRAF.write(str.getBytes()); //此时写入的文件就有问题,虽然大小一样,但是文件无法打开

如果用
while(-1   !=   (buf   =   oFIS.read()))
{
        c   =   (char)buf;
        s.append(c);
}
str   =   s.toString();
oRAF.writeBytes(str);
也可以正常写进文件,并且也可以正常打开 
不知道这里面是什么原因,导致第一种方法不能用的???
int到char的内部转换到底是怎么实现的???

还有呀
我用winhex比较了一下两个文件的内容
前面几个字节不一样,并且中间有一些乱了,大部分的数据还是一样的
原文件前面字节的内容为:ff
在新文件中就变成了3f
这是为什么????


------解决方案--------------------
char 和 int 的转换看ascii表
------解决方案--------------------
你的代码很是难懂啊(第一句话我就蒙了,是LZ笔误吗?),可不可以把你的代码给全啊?
这样很难分析啊~~~
------解决方案--------------------
楼主的问题还真不少~~
 其实最根本的是LZ对"对象造型"这个概念理解的不够.
希望LZ看看这方面的东西.