float dblWriteBuy;
    BYTE bRBuy[2];
    int sysBuy=(int)(dblWriteBuy*100);
   
    /* char cTemp[1]; 
    cTemp[1] = sysBuy; */就是这段程序有问题,我想把十进制直接写入,转化为十六进制
时就会出错,由于十六进制应该为4位,所以我这样转会出现错误?????
比如dblWriteBuy=12.12;乘于100,应该为1212,转化为十六进制为4BC,前面应该补0以04BC写入    memcpy(bRBuy,cTemp, 2);
    st=SLE4442_WriteChar(38,2,bRBuy);

解决方案 »

  1.   

    其实我以1212写进去时候,其实就会自动转化为十六进制,但byte型就出错了,就变成B3CC
      

  2.   

    你没说清楚用意。使用联合不知道能否解决。
    union{
         float dblWriteBuy; 
        BYTE bRBuy[2];
    };
      

  3.   

    char cTemp[1];  
    cTemp[0] = sysBuy;
      

  4.   

    float dblWriteBuy;
    BYTE bRBuy[2];
    int sysBuy=(int)(dblWriteBuy*100); bRBuy[0] = sysBuy & 0xFF;    // 低位
    bRBuy[1] = sysBuy & 0xFF00;  // 高位看LZ后面的4442,感觉好像是金融行业IC卡操作(4442芯卡片的金额存储)。
      

  5.   

    float dblWriteBuy;
    BYTE bRBuy[2];
    int sysBuy=(int)(dblWriteBuy*100); bRBuy[0] = sysBuy & 0xFF;    // 低位
    bRBuy[1] = sysBuy & 0xFF00;  // 高位看LZ后面的4442,感觉好像是金融行业IC卡操作(4442芯卡片的金额存储)。忘记移位了,不好意思。float dblWriteBuy;
    BYTE bRBuy[2];
    int sysBuy=(int)(dblWriteBuy*100); bRBuy[0] = sysBuy & 0xFF;           // 低位
    bRBuy[1] = (sysBuy & 0xFF00) >> 4;  // 高位