当前位置: 代码迷 >> J2SE >> \x0A\xC3\xDC\x0D\x09\x0A\xC2\xEB\x02转String密 码解决办法
  详细解决方案

\x0A\xC3\xDC\x0D\x09\x0A\xC2\xEB\x02转String密 码解决办法

热度:507   发布时间:2016-04-23 22:23:56.0
\x0A\xC3\xDC\x0D\x09\x0A\xC2\xEB\x02转String密 码
已知:\x0A\xC3\xDC\x0D\x09\x0A\xC2\xEB\x02
转换结果是“密 码”(中间的符号是回车)
在c++里面可以这样写:char *pwd = "\x0A\xC3\xDC\x0D\x09\x0A\xC2\xEB\x02";
Java里面unicode怎样转成密 码?

------解决方案--------------------
\x0A\xC3\xDC\x0D\x09\x0A\xC2\xEB\x02

0A C3 DC 0D 09 0A C2 EB 02

其中红色部分为 GBK 中的“密”字,蓝色部分为“码”字,这其中还有其余不可见字符。需要知道你这个串是用在什么地方的才能确定其他字符的去和留。
------解决方案--------------------

    public static void main(String[] args) throws Exception{
        String str = "\\x0A\\xC3\\xDC\\x0D\\x09\\x0A\\xC2\\xEB\\x02";
        String pwd = getPwd(str);
        System.out.println(pwd);
    }
    
    public static String getPwd(String str) throws UnsupportedEncodingException {
        str = str.replaceAll("\\\\x", "");  //去除\x的标识
        byte[] bs = new byte[str.length()/2 - 1];  //长度减1时为了除去结尾符02
        for(int i = 0;i<bs.length;i++) {
            bs[i] = (byte)Integer.parseInt(str.substring(i * 2,(i+1) * 2), 16);
        }
        return new String(bs, "gbk");
    }

结果:
    //空的回车

    //制表符


1. 请确认密码中的每个字符是否都以回车分割?
2. 请确认空格是否被替换为了制表符?
  相关解决方案