一个macAddress为00:24:27:0d:47转为十六进制的ASCII串后为
30 30 3a 32 34 3a 32 37 3a 30 64 3a 34 37
现在要把这个十六进制的ASCII串转成二进制数,用JAVA程序代码怎么实现

解决方案 »

  1.   

    应该要转换两次,第一次是转换为 ASCII字符串,然后再以16进制解析为数字。String str = "30 30 3a 32 34 3a 32 37 3a 30 64 3a 34 37";
    String[] items = str.split(" ");
    String s="";
    for (item in items) {
      char c = (char) Integer.parseInt(item);
      s = s + c;
    }最后:Integer.parseInt(s, 16);
      

  2.   

    调试了下,发现你原始串里面就有冒号的啊,修正后代码:
            String source = "30 30 3a 32 34 3a 32 37 3a 30 64 3a 34 37";
            String[] items = source.split(" ");
            String s = "";
            for (String item : items) {
                char c = (char) Integer.parseInt(item, 16);
                System.out.print(c);
                s = s + c;
            }
            int num = Integer.parseInt(s.replaceAll(":", ""), 16);
            System.out.println(" = " + num + "\t\t" + Integer.toBinaryString(num));
      

  3.   

    如果source="99 16 91 13 30 30 3a 32 34 3a 32 37 3a 30 64 3a 34 37 92 01 01 "就会报错哦
      

  4.   

    99? 91?   ASCII 里面,怎么有超过 7F 的?另外 01 是个控制字符,也不对头吧?