我需要解析由 C ++ 创建的二进制文件,并在该文件中覆盖一个4字符长字符数组,例如将ABCD的原始字符数组更改为WXYZ 。
我确切地知道该char数组的字节位置。我尝试了 RandomAccessFile ,这让我很容易就到了这个位置。但我现在不能让其他人为我工作。
RandomAccessFile是正确的方法吗?
我知道我必须从 2 bytes char 到一个字节char 进行一些转换。
有人有一个很好的方法吗?
答案 0 :(得分:1)
RandomAccessFile
没问题。正如您已经想到的那样,在C ++中char
是单个字节,而Java使用UTF-16。
最简单的选择可能是在代码中使用byte[4]
来表示4个字符的ASCII字符串。
答案 1 :(得分:1)
好的:总是尝试使用JavaDoc RandomAccessFile。
long position = ...;
byte[] bytes = new byte[] { (byte)'W', ... };
raf.seek(position);
raf.write(bytes);