任何人都可以“详细解释”这段代码如何生成一个类似左边图片的.cfg文件?我想改变它,使它变得像正确的那样?
setLastFileInTNM(getTnmInstalledPath(), getLastPath());
private void setLastFileInTNM(String TNMConfigFilePath, String fileTobeSetInTNM) throws Exception {
//fileTobeSetInTNM += " ";
File file = new File(TNMConfigFilePath);
char[] dt = fileTobeSetInTNM.toCharArray();
char[] data = readFile(file);
int offset = 145;
int length = fileTobeSetInTNM.length();
int j = 0;
for (int i = 145; i < offset + length; i++) {
if (j == dt.length) {
break;
}
data[i] = dt[j];
j++;
}
data[offset + length] = (char) 0;//for seprating the rest
writeToFile(data, file);
readFile(file);
}
此代码在.cfg文件中写入地址。下图是比较notepad ++中的两个.cfg文件。左边的代码由上面的代码构成,我想更改代码,以便十六进制类型变得像右图。我该如何更改代码?
答案 0 :(得分:1)
右边的文字说
" D : \ M D S 8 3 1 0 . h e x "
,左边的文字说
" D:\MDS 8310.hex 1 0 . h e x "
。
这表明原始文件中的数据编码是每个字符16位,每隔一个字符留空,而左边只是将每个字符复制为一个字节,因此文件名太浓缩了。如果你想用这种低级风格来做,只需添加一行
data[++i] = 0x20;
后行:
data[i] = dt[j];
并将for循环的上限增加到offset + length * 2
我不明白为什么你的文件也在第29行和第6行被修改,但这可能取决于你的其余代码。