服务端发的某个short字段存到buf里是正值,存完在看就是0的问题

 

  

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);

 

posted @ 2013-04-18 23:57  vanishfan  阅读(270)  评论(0编辑  收藏  举报