用Java将十六进制字符串转换回字符串

时间:2012-11-18 17:46:53

标签: java string methods hex

我正在努力尝试将十六进制数字字符串转换回原始字符串。我使用以下方法转换字符串:

 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;
    }

我真的被困了,任何建议都会非常感激。

提前谢谢

2 个答案:

答案 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;

所有输入都将被保留,原始字符串可以从十六进制字符串中恢复。也许你真的意味着四位转变?