【问题标题】:converting a hex string back to a string, in Java在Java中将十六进制字符串转换回字符串
【发布时间】:2012-11-06 17:23:16
【问题描述】:

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

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

我真的被困住了,任何建议都将不胜感激。

提前谢谢你

【问题讨论】:

  • 您能给出示例输入和预期输出吗?

标签: java string methods hex


【解决方案1】:

考虑一下:

     String hexStr = "0123456789ABCDEF";
     long i = Long.valueOf(hexStr, 16);
     System.out.println(Long.toHexString(i));

【讨论】:

    【解决方案2】:

    问题中的代码会破坏信息。只有每个输入字节的最高有效两位和最低有效四位对结果有影响。这意味着它通常不能被逆转。

    如果右移了 4 位,而不是 6:

    int j = ( p[k] >> 4 )&0xF;
    

    所有输入都将被保留,并且可以从十六进制字符串中恢复原始字符串。也许您真的是指四位移位?

    【讨论】:

    • 是的,抱歉,我确实是指 4 位; >> 4
    • 您实际使用哪个版本来生成您要转换回来的字符串?
    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2014-10-24
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多