关于sprintf语句
sprintf(s,"%02X%02X%02X.0",rbuf[1],rbuf[2],rbuf[3]);
当rbuf[1]或rbuf[2]或rbuf[3]大于0x80时,格式化出来的字符串就出错,前面加上了FF,是怎么回事啊???
请高手帮忙!!!
[解决办法]
大于080的时候是汉字编码
[解决办法]
主要看你的rbuf如何定义的,如果是BYTE数组,应该不会出问题。针对你的代码可以强制类型转换,改为
sprintf(s,"%02X%02X%02X.0",(byte)rbuf[1],(byte)rbuf[2],(byte)rbuf[3]);
[解决办法]
考虑一下数据范围,截取后面的一个字节就可以了:
sprintf(s,"%02X%02X%02X.0",rbuf[1]&0xff,rbuf[2]&0xff,rbuf[3]&0xff);
&0xff,截取末尾一个字节