【发布时间】:2015-07-20 06:12:42
【问题描述】:
谁能“详细”解释一下这段代码是如何生成像左图一样的 .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 文件。左边是上面的代码做的,我想改一下代码,让hex类型变成右图的样子。我应该如何更改代码?
【问题讨论】:
-
图片在哪里?
-
添加了@SashaSalauyou
-
每行包含 16 个字节(每个字节显示两个十六进制数字),因此 145 / 16 = 9,更改应该出现在第 10 行,它们确实出现了。不知道为什么您在第 6 行中进行了较早的更改。双方是不同的,因为您通过 fileTobeSetInTNM 参数写入的数据是不同的。
-
最右边的幻灯片不是来自上面的代码,我只是想改变代码,让它的十六进制值变成左边最右边的那个。 @帕洛
-
从你所说的看来,情况正好相反。看起来右侧的数据是由您的代码生成的,而左侧的数据是您想要模仿的其他文件。相信这一点的原因是您的代码仅从位置 145 写入,并且发生在右侧,而在左侧,您在第 6 行和第 29 行有其他更改。文件名也表明了这一点。所以你需要详细说明你做了什么以及为什么。
标签: java hex notepad++ hex-editors