我想把一个字符用十六进制来表示,比如字符串"ip",转换后我想要的结果是"0x690x70",现在我能把这个字符串转成如"6970"这样的格式,而前面的"0x"没有啊!小弟对数据结构不了解,还望各位高手不吝赐教教。

解决方案 »

  1.   


    //第一种方法
    public static String stringToHex(String base)
       {
           StringBuffer buffer = new StringBuffer();
           int intValue;
           for (int x = 0; x < base.length(); x++)
           {
               int cursor = 0;
               intValue = base.charAt(x);
               String binaryChar = new String(Integer.toBinaryString(base.charAt(x)));
               for (int i = 0; i < binaryChar.length(); i++)
               {
                   if (binaryChar.charAt(i) == '1')
                   {
                       cursor += 1;
                   }
               }
               if ((cursor % 2) > 0)
               {
                   intValue += 128;
               }
               buffer.append(Integer.toHexString(intValue));
           }
           return buffer.toString();   }
       
        public static String stringToHex2(String intString,String encoding) throws UnsupportedEncodingException
       {
           byte[] bytes = intString.getBytes(encoding);
           return bytesToHex(bytes);
       }//第二种方法
       public static String stringToHex2(String intString)
       {
           byte[] bytes = intString.getBytes();
           return bytesToHex(bytes);
       }   public static String bytesToHex(byte[] bytes)
       {
           StringBuilder hexString = new StringBuilder(2 * bytes.length);       for (int i = 0; i < bytes.length; i++)
           {
               String hexStr = String.format("%2X", bytes[i]);
               hexString.append(hexStr);
           }
                 return hexString.toString();
       }
      

  2.   

    youanyyou ,请问你是在网上找的一段代码贴上来的?自己测试过? 你的代码我测试过,不行呀!
      

  3.   

    那这样吧, 你都能把一个字符搞成一个int了,那你搞出来以后自己在前面标记下0x不就好了嘛?
      

  4.   

    String s = "ip";
    char c[] = new char[s.length()];
    String hexString = "";
    for(int i= 0;i<s.length();i++){
    c[i] = (char)s.charAt(i);
    hexString += "0X"+Integer.toHexString(c[i]+0);
    }
    System.out.println(hexString);
      

  5.   

    3 楼 izard999;5 楼 longtenggdf 的回复: 把"Ox"标记进去我并不是没想到过,这样是不行的。如:0xff它表示一个字符的ASCII码的十六进制(不知这样说对否?还是单纯的十六进制?),其数据类型为int型。比如以下定义是合法的:int i = 0x69; int p = 0x70。 字符'n'的十六进制码为“6e”,如果把字符串“0x”与“6e”用加号拼起来,那么它就是一个字符串类型的了,而不是一个int型的了。  我想要的结果是:若转换字符串“iphone”,其返回的结果像是 int i = 0x69; int p = 0x70; int h = 0x68; int o = 0x6f; int n = 0x6e; int e = 0x65这样的格式。 你们的,明白我的意思?
      

  6.   

    明白你的意思。但是可能你的理解有点误区,0x 只是给编译器一个标识,告诉编译器将0x后面的按16进制接受为int.int a  = 0x2f;
    与 int a = Integer.parseInt("2f", 16);是一致的。而当你system.out.println(a)时,默认情况下 按照十进制来打印出一个字符串。打印16进制时Integer.toHexString(a);打印出来的也不会带“Ox”不知道你明白我的意思没有,一点个人的理解,LZ加油研究。