我有以下代码:
private char[] headerToWrite;
protected String workingFileName;
private void writeHeaderToFile()
{
try
{
String completeFile = new String(headerToWrite);
File myFile = new File(workingFileName);
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(completeFile);
myOutWriter.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
在上面的代码中,变量headerToWrite包含一个数组,其中前几个值是:[1, Q, H, S, , 4, ±, Q, .....]
。这是十六进制的[31, 51, 48, 53, 01, 34, B1, 51...]
。
它用于创建字符串completeFile = 1QHS 4±Q...
但是,在写入文件时,文件包含 1QHS 4űQ..... 十六进制为[31 51 48 53 01 34 c2 b1 51]
....
我不明白为什么会有一个额外的 c2 但我发现myOutWriter中的字节如下:[49, 81, 72, 83, 1, 52, -62, -79, 81]
....
这里有趣的一点是-62, -79
似乎负责c2, b1
. 为了让它工作,-62, -79
应该只是177
,这是 b1 的小数。有趣的是 177 + 79 是 256。
很明显,在从completeFile中的 ascii 字符到myOutWriter中的字节的传输中,c2
正在添加。
我想知道是否有人可以解释为什么以及如何解决它。
谢谢