int siDay = GetDayOfTime(0);//获取当月的天数 int signFlag = CheckIntBit(tmpValue.usr_sign.uiSignFlag, siDay); *((short *)(cOutBuf + siPos)) = signFlag; siPos+=sizeof(short);
signFlag在1-16号的时候都正常,17号开始这个值的最高位超过了short的大小,及末16位都是0,所以放到short里面的时候就是0了
修改后:
int siDay = GetDayOfTime(0);//获取当月的天数 int signFlag = CheckIntBit(tmpValue.usr_sign.uiSignFlag, siDay); if(signFlag > 0) signFlag = 1;//不然17号开始超过short的长度了赋值到short里就会变成0~ *((short *)(cOutBuf + siPos)) = signFlag; siPos+=sizeof(short);