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