黑马程序员技术交流社区

标题: IO流中位运算 [打印本页]

作者: 彭润生    时间: 2012-9-19 10:38
标题: IO流中位运算
import java.io.*;
class JiaMi
{
public static void main(String[] args) throws Exception
{
  File file = new File("D:\\tra\\export.txt");
  if(!file.exists())
  {
   throw new RuntimeException("文件不存在");
  }
  FileInputStream fis = new FileInputStream(file);
  FileOutputStream fos = new FileOutputStream("D:\\tra\\jiamihou.txt");
  
  int len = 0;
  while((len = fis.read())!=-1)
  {
   fos.write(len^0x5f);//如果要用byte类型的数据进行这样的计算,该怎样弄,怎样才能不丢失精度呢?如果&上个0xff那么数据没变化。为什么?
  }
  fos.close();
  fis.close();
}
//上面我用的这个
   byte[] buf = new byte[1024];
  int len = 0;
  while((len = fis.read(buf))!=-1)
  {
   
   for(int x = 0;x<len;x++)
   {
    buf[x] = buf[x]&0xff;
   }
   fos.write(buf,0,len);
  }//会出现损失精度的可能。怎么解决?

作者: 彭润生    时间: 2012-9-19 11:46
吕书凯 发表于 2012-9-19 11:39
这是你的加密算法,就是让32位的int类型的len去异或一个16进制的数10111111(5F),当然
会损失精度,&0xff ...

int的那个没有损失,下面的那个byte在进行那个运算是损失精度,要怎么样弄呢?
作者: 彭润生    时间: 2012-9-19 14:13
吕书凯 发表于 2012-9-19 12:53
损失精度是因为数字都是Int类型的,你用一个byte去与一个int,再想返回一个byte,肯定不行,类型提升了回 ...

解决不了?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2