繁体   English   中英

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

[英]converting a hex string back to a string, in Java

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

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

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

先感谢您

考虑一下:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM