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看看这方面的东西.