我有一个需求,那就是假设有A,B,C三个整数,那么我需要把这三个数整合成X通过X我又可以把A,B,C还原出来。请问这个有没有好的算法?

解决方案 »

  1.   

    CString str;
    str.Format(_T("%d%d%d"),A,B,C);
    int nGet = atoi(str);----------
    str.Format(_T("%d"),nGet);
    int A = atoi(str.Mid(0,1));
    int B = atoi(str.Mid(1,1));
    int C = atoi(str.Mid(2,1));
      

  2.   

    哥们我这里的A,B,C的位数是不定的,X的位数也是不定的,都是一个整数
    比如
    A=10
    B=21
    C=32那么要把这三个数转换成一个数X,而从X又能将A,B,C给还原回来。
      

  3.   

    例如,ipv4的地址就可以编码成一个unsigned long
      

  4.   

    A,B,C是一个整数,没有固定说是有多少位的。
      

  5.   

    数字是没有规律的,我目前的想法是把A,B,C都做一个转换,也就是这些数字有几位,我就在前面补几个0。
    例如A=10,B=5,C=106,则转换后为
    001005000106,这样的话,我就可以首先判断前面2个0,解析出10,再判断一个0,解析出5,最后判断3个0,解析出106.不知道还有没有更好的办法,当然是越短越好
      

  6.   

    unsigned char a = 10;
    unsigned char b = 5;
    unsigned char c = 16;unsigned long x = a<<16 + b<<8 + c;--------------------------unsigned char a = x>>16;
    unsigned char b = (x>>8)&0xff;
    unsigned char c = x&0xff;