分类: C/C++
2008-06-03 11:18:15
近段时间把c++采集流量程序从32位Linux平台迁移至64位Linux平台,,原先在32位Linux上运行良好的程序,在64位平台出现非常奇怪的问题,采集到的16进制数值超出了计数器范围,而且头几位数不同程度的出现重复,如:46A6B46A6B0CB0835F。我所使用的采集流量类库是snmp++3.2.23(snmp++3.2.22对64位平台支持的不好),于是从类库着手查找问题,终于被我发现问题所在。
打开src/ctr64.cpp,把
sprintf(buf, "0x%lX%08lX", high(), low());
改为
sprintf(buf, "0x%X%08X", high(), low());