我有一个包含十六进制值的字符串。现在我想将这个确切的字符串写入以 .hex 结尾的文件。我怎样才能在java中实现这一点?
我已经尝试将十六进制值转换为 ASCII,然后将此字符串写入文件。但是所有高于 127(dec) 的十六进制值都无法正确处理。
86(hex) 转换为 ?(char),即 3F(hex) 而不是 86(hex)。
您可以尝试获取字符串的每个字符,将其转换为整数,然后将值以字节形式写入文件中。要执行相反的过程,您只需将文件读入字节数组并将每个字节转换为 char 即可检索您的字符串。然后我确定您可以找到一些算法将您的字符串转换为十六进制字符串。
对我来说,答案是这样的:
在 Projectproperties 下,我需要将 Text-file-Encoding 设置为 ISO-8859-1。然后我的旧程序效果很好。
public static String hexToASCII(String hex){
if(hex.length()%2 != 0){
System.err.println("requires EVEN number of chars");
return null;
}
StringBuilder sb = new StringBuilder();
for( int i=0; i < hex.length()-1; i+=2 ){
String output = hex.substring(i, (i + 2));
int decimal = Integer.parseInt(output, 16);
sb.append((char)decimal);
}
return sb.toString();
}