我正在努力尝试将十六进制数字字符串转换回原始字符串。我使用以下方法转换字符串:
private static String hex(String binStr) {
String newStr = new String();
try {
String hexStr = "0123456789ABCDEF";
byte [] p = binStr.getBytes();
for(int k=0; k < p.length; k++ ){
int j = ( p[k] >> 4 )&0xF;
newStr = newStr + hexStr.charAt( j );
j = p[k]&0xF;
newStr = newStr + hexStr.charAt( j ) + " ";
}
} catch (Exception e) {
System.out.println("Failed to convert into hex values: " + e);
}
return newStr;
}
我真的被困了,任何建议都会非常感激。
提前谢谢
答案 0 :(得分:1)
考虑一下:
String hexStr = "0123456789ABCDEF";
long i = Long.valueOf(hexStr, 16);
System.out.println(Long.toHexString(i));
答案 1 :(得分:1)
问题中的代码会破坏信息。只有每个输入字节的最高有效两位和最低有效四位对结果有贡献。这意味着它通常不会被逆转。
如果右移是4位,而不是6:
int j = ( p[k] >> 4 )&0xF;
所有输入都将被保留,原始字符串可以从十六进制字符串中恢复。也许你真的意味着四位转变?