悲剧的调试
今天的调试问题多多:
1 : string a = char * b;
这里a并不知道b的长度 因此会在/0 处截断 这样子如果把string 做 存储二进制数据用 必然会错。。。
解决办法:
1: 在类中纪录长度
2: 在内存中存储ascii码形式的二进制数据 读出写入的时候 记得要做个转化 详见我的中心站网管程序 NMCStation 中的 getBinaryEncrypt那几个函数
2: char a= 0xef;
if(a>=0x10) 这样比较大小竟然不行。。。 不知道为什么现在。。。
int a = 0xef;
if(a>=0x10) 这样子比较是可以的 但是如果是从正常的char 直接强制转化为int 则会在前面补充上三个字节的 0xff 这样就被拒了。。。
解决办法: a = a&0x000000FF;
3:
string ipStr = "99.1.1.201";
uint32_t ip = inet_addr(ipStr.c_str()); 这个函数,经常用到
并且 ip 多数情况是个10位数字 除非是 0.xx.xx.xx 这种情况。。。 有可能么?
4: 32位计算机的long int 和 int 长度是一样的
调用atoi 与 atol 函数都是一样的 最多只能得到 2^31 这么大的数字
如果想要更大的数字
1: 注意这种情况
ip a = strtoul(b.c_str(),NULL,10); 这样就行
2: 分段处理咯 我就是这么搞的
5: eclipse 使用不熟悉啊。。。
注意memory browser expressions 等的用法。。。
收工 睡觉!