怎么将十六进制字符串:0020000000c00012  转换成:0x00 0x20 0x00 0x00 0x00 0xc0 0x00 0x12 .   最好有代码.

解决方案 »

  1.   

    stringstream conv;
    conv<<hex;
    conv<<"0020000000c00012";
    unsigned char sz[8]={0};
    long long *xx = (long long*)sz;
    conv>> *xx;
    reverse( sz , sz + 8 );
    这里的sz就是你所需要的字符串了,
      

  2.   

    需要
    #include<sstream>
    #include<algoritm>
      

  3.   

    你把整个字符串string拆开为8个两位的字符串数组,然后在前面加“0x”,再转换为相应的应用类型,行不?
    用String类里的toCharArray() 或者 subString(int beginIndex, int endIndex)都能实现
      

  4.   

    不好意思,substring(int beginIndex, int endIndex)方法名字中string的“S”是小写的,特此更正
      

  5.   

    long num = 0x0020000000c00012L;
    String[] str = new String[8];
    for(int i = 7; i >= 0; i--) {
      str[i] = String.format("0x%02x", (num & 0xffL << (i*8)) >> (i*8));
      System.out.print(str[i] + " ");
    }
      

  6.   

    忘记是字符串了,改一下:String s = "0020000000c00012";
    long num = Long.parseLong(s, 16);
    int k = s.length() / 2;
    String[] str = new String[k];
    for (int i = k - 1; i >= 0; i--) {
      str[i] = String.format("0x%02x", (num & 0xffL << (i * 8)) >> (i * 8));
      System.out.print(str[i] + " ");
    }
      

  7.   

    Byte的范围是:-127到128,你上面的0xc0对于Byte,已经溢出.
    参考代码:
    package net.oicp.sunflowerbbs;public class Ahex { static Byte[] Convert(String str) {
    int len = str.length();
    Byte[] result = new Byte[(int)Math.round(len/2.0D)];
    int k=0;
    for (int i = 0; i < len; i += 2) {
    String tmp = str.substring(i, i + 2 > len ? i + 1 : i + 2);
    Long hex = Long.parseLong(tmp, 16);
    result[k]=hex.byteValue();
    System.out.println(result[k]);
    k++;
    }

    return result;
    } public static void main(String[] args) { Convert("0020000000c00012"); }}