我有十六进制数据块,我想按原样写入文件。
块 的 000100050000470040002E000000000099009900500000000000490067008D0000000000890081007600000000004C002F0027000000000200050000470040002E0000000000000D00590065006C006C006F00770020006F006C0069007600650000000099009900500000000000000D004F006C006900760065002000790065006C006C006F007700000000490067008D0000000000000D00440069007300740061006E007400200062006C00750065000000008900810076000000000000110050006500610072006C0020006D006F00750073006500200067007200650079000000004C002F00270000000000000F004D00610068006F00670061006E0079002000620072006F0077006E0000
上面的块表示Adobe .aco(存储调色板)文件。
在十六进制编辑器中打开的类似文件显示: -
尝试使用
编写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编辑器中显示不同(如下图所示)
我想编写Given block,因为它处于文件中的当前状态。
答案 0 :(得分:1)
您将获得不同的十六进制代码,因为您正在以某种编码方式编写字符串。如果你想写这样的字节数据,首先将数据从字符串转换为byte [],然后写入字节。 要转换,请参阅:Convert a string representation of a hex dump to a byte array using Java?