其中Msg_Id为INT64类型64位(8字节)的整数bit64~bit61:月份的二进制表示;
bit60~bit56:日的二进制表示;
bit55~bit51:小时的二进制表示;
bit50~bit45:分的二进制表示;
bit44~bit39:秒的二进制表示
bit38~bit17,把短信网关的代码转换为整数填写到该字段中。
bit16~bit1,顺序增加,步长为1,循环使用。我如何得取这些数据?

解决方案 »

  1.   

    FILETIME ft;
    FILETIME localFt;
    SYSTEMTIME st;
    __int64 nTime;
    nTime = 0x01C46325D5B85130;
    CopyMemory(&ft,&nTime,sizeof(nTime));
    FileTimeToLocalFileTime(&ft,&localFt);
    FileTimeToSystemTime(&localFt,&st);
    CString sTime;
    sTime.Format("%04d年%02d月%02d日%02d点%02d分%02d秒",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
      

  2.   

    设定一个结构体
    typedef struct tagTMSGID
    {
    DWORD mon:4;
    ...
    }TMSGID;
      

  3.   

    不会移位就这样,定义:
    struct sC
    {
    __int64 nFlag:16; // 1到16位
    __int64 nGate:22; // 17到38位
    __int64 nSec:6;   // 依此类推
    __int64 nMin:6;
    __int64 nHour:5;
    __int64 nDay:5;
    __int64 nMon:4;
    };union uD
    {
    sC c;
    __int64 id;
    };使用的时候:
    uD dd;
    dd.id = 2332334;// 把要分解的__int64赋值给id
    要用到每一位就:
    dd.ic.nSec     //得到秒