将十六进制数据写入文件原样?

时间:2016-01-10 00:20:51

标签: java android file hex

我有十六进制数据块,我想按原样写入文件。

块 的 000100050000470040002E000000000099009900500000000000490067008D0000000000890081007600000000004C002F0027000000000200050000470040002E0000000000000D00590065006C006C006F00770020006F006C0069007600650000000099009900500000000000000D004F006C006900760065002000790065006C006C006F007700000000490067008D0000000000000D00440069007300740061006E007400200062006C00750065000000008900810076000000000000110050006500610072006C0020006D006F00750073006500200067007200650079000000004C002F00270000000000000F004D00610068006F00670061006E0079002000620072006F0077006E0000

上面的块表示Adobe .aco(存储调色板)文件。

在十六进制编辑器中打开的类似文件显示: -

enter image description here

尝试使用

编写Given块

代码

try {   
    File ACO = new File(f.getAbsolutePath(),"NameRandom.aco");
    ACO.createNewFile();

    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(ACO)));
    try {
        writer.write(<-- Above Block  -->);
    } finally {
        writer.close();
    }
} catch (IOException e) {
    e.printStackTrace();
}

但上面的代码在hed编辑器中显示不同(如下图所示)

enter image description here

我想编写Given block,因为它处于文件中的当前状态。

1 个答案:

答案 0 :(得分:1)

您将获得不同的十六进制代码,因为您正在以某种编码方式编写字符串。如果你想写这样的字节数据,首先将数据从字符串转换为byte [],然后写入字节。 要转换,请参阅:Convert a string representation of a hex dump to a byte array using Java?