0

我得到了一个文件的字节数组字符串,并希望每个字节都被减去 2 或类似的值,然后再被加上 2。我想这样做:

byte buffer[] = new byte[(int) file.length()];
try {
    in = new FileInputStream(file);
    in.read(buffer);

    for(int i = 0; i < buffer.length; i++){
        buffer[i] = (byte) (buffer[i]-2); // and then later +2
    }
}

但它不起作用。首先它会像我想要的那样更改文件,但后来当我把整个事情 +2 时,它给了我一些奇怪的东西。

所以我想要这个:

  1. 获取一个字节数组,称为buffer
  2. 然后更改一些值
  3. 将这些值改回来
  4. 获取与以前相同的文件
4

2 回答 2

2

您的代码中有一些错误:

  1. new byte[(int) file.length()];这将最终导致 OutOfMemoryError 或文件的损坏读取
  2. in.read(buffer);这只会读取文件的一些字节。
  3. 您用“加密”标记了这个问题。这根本不是加密。“解密”内容将非常容易。

您的文件仍然是相同的长度吗?

于 2013-01-11T20:03:21.853 回答
1

您需要使用in.read()调用的返回值来准确了解实际读入缓冲区的字节数,以及要写入输出的字节数。

于 2013-01-11T20:55:00.767 回答