【问题标题】:byte - 2 then next time +2 doesn't work... why?byte - 2 然后下一次 +2 不起作用......为什么?
【发布时间】:2013-01-12 04:55:00
【问题描述】:

我得到一个文件的字节数组字符串,希望每个字节都取负 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. 获取与以前相同的文件

【问题讨论】:

  • 尝试使用调试器在操作前后检查字节数组。这将告诉您是算法问题还是 I/O 问题。

标签: java encryption byte


【解决方案1】:

您的代码中有一些错误:

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

你的文件长度还是一样吗?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多