我想从一个unsigned char data[DataLen]数组中按照一定的格式读出数据,
并把这些数据存储在相应的数字型变量中,格式如下:
2byte 毫秒
1byte 秒
1byte 分钟
1byte 小时
1byte 天
4byte data
依次循环
我想把这些数据读出来,存放到相应的数组中,比如毫秒数组,秒数组等。
请问我用什么样的变量来存呢?都用int型吗?还有应该怎么读呢?
然后我还想把这些数据以文本方式显示出来,比如x天y小时....zz毫秒dd数据,
请问是不是用itoa函数,除了类似的函数,vc里面有没有类似vb里面的Str()直接
返回字符串的函数?

解决方案 »

  1.   

    二进制保存在BYTE*中,使用强制类型转换
      

  2.   

    _itoa看一下这个函数,把unsigned char数据先转化为int型的
      

  3.   

    比如x天y小时....zz毫秒dd数据
    ---------------------------
    CString szText;
    szText.Format("%d天%d小时...%d毫秒%d数据", nDay, nHour, ...,nMillSecond, nData);
    AfxMessageBox(szText);
      

  4.   

    1byte 秒
    1byte 分钟
    1byte 小时
    1byte 天
    这几个可以强制转换
     
    第一个就用一个WORD存好了
    WORD wMSec = 0;
    wMSec |= (data[0]<<8);
    wMSec |= data[1];
    啊行?
      

  5.   

    谢谢大家,我已经明白很多了。
    可是还有几个小地方想确认一下:
    1、vc里面ini型占几个字节?4个吗?
    2、如果我想保存的数字分别为1字节,2字节,4字节,8字节或其他数量(比如3,7)等字节数的数据时用什么样的类型比较合适。
    没有像vb里面的byte,int,long等的数据类型吗?
    3、所谓的强制类型转换,这样用可以吗?
    int posi; //读到数组中的哪一个位置
    int cDay = *((int *)(&data[posi]]));  //假设已经读到天的位置
    还是 cDay = int(data[posi]);
    还是其他?
    4、szText.Format()函数中,如果我要输出一个long型,用(%?)?smallcrocodile(大鳄鱼):这不是什么规约,这是通讯后的一个数据包。还有大家知道那里有关于vc的基本数据类型,函数的资料吗?msdn我看不太懂,e文太差。