0

任何人都可以“详细”解释我这段代码如何制作一个像左边图片一样的 .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类型变成右图的样子。我应该如何更改代码?
在此处输入图像描述

4

1 回答 1

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 行被修改,但这可能取决于您的其余代码。

于 2015-05-10T08:52:27.500 回答