已采纳回答 / dabo
这是正确的,数字以字节写到你的文件,直接打开文件,编辑器会将数据根据字符集显示为文字,而你的数字对应不上字符集中的文字,所以显示乱码。原理和用notepad 打开一个*.exe文件乱码一样
2016-01-30
最赞回答 / 梁XX
需要写入,你可以在使用OutputStreamWriter或FileWriter不加入flush()方法,运行后观察被复制文件大小,你会看到不是GBK的文件,有时候复制文本为空,即没有复制东西,为0KB. 同时字符流FileWriter有可能出现漏读现象,再加上flush()方法,发现都被写入。因为下次在使用字符流的时候一定要记得加flush()方法确保没有错误。
2016-01-26
最赞回答 / Its_forever
在32位的电脑中数字都是以32格式存放的,如果是一个byte(8位)类型的数字,他的高24位里面都是随机数字,低8位才是实际的数据。java.lang.Integer.toHexString() 方法的参数是int(32位)类型,如果输入一个byte(8位)类型的数字,这个方法会把这个数字的高24为也看作有效位,这就必然导致错误,使用& 0XFF操作,可以把高24位置0以避免这样错误的发生。
2016-01-11
已采纳回答 / 孤寂0123
betys=in.read(buf,0,buf.length),读取信息内容的时候,将信息暂时存入buf数组,一次性读不完的,会将读取到的信息的buf数组循环释放的,然后再继续存入buf数组,继续释放------我是这样想的,仅供参考
2016-01-08
已采纳回答 / chrt
java默认的编码方式是unicode big endian,即大端存储方式的unicode,具体数据的高位字节存放在低位地址上。关于大端模式和小端模式可以进一步百度。
2016-01-06
已采纳回答 / Its_forever
Java 中的一个byte,其范围是-128~127的,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff ), 那么转化出的结果就不是我们想要的了。 而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,结果的高24位就会被清0,这是我们想要的结果。 看看这篇博客吧,http://makemyownlife.iteye.com/blog/104...
2016-01-04