阅读:1755回复:5
PTRecieve问题还是DbgPrint问题
在Passthru的PtReceive当中,我想解析出以太头看一下,只是简单地用DbgPrint函数打印,结果打印出的结果当中多了很多fffffff
char * buffer = HeaderBuffer; DbgPrint("***************************************************************************\n"); DbgPrint("*PacketSize = %d\n",PacketSize); DbgPrint("*LookAheadBufferSize = %d\n",LookAheadBufferSize); DbgPrint("*DMAC=%02x%02x%02x%02x%02x%02x\n", buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]); DbgPrint("*DMAC=%x-%x-%x-%x-%x-%x\n", buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]); DbgPrint("*SMAC=%02x%02x%02x%02x%02x%02x\n", buffer[6], buffer[7], buffer[8], buffer[9], buffer[10], buffer [11]); DbgPrint("*TYPE=%02x%02x\n", buffer[12], buffer[13]); DbgPrint("***************************************************************************\n"); 通过DBGView观察输出结果 00000004 0.00229666 *PacketSize = 78 00000005 0.00233773 *LookAheadBufferSize = 78 00000006 0.00239500 *DMAC=ffffffffffffffffffffffffffffffffffffffffffffffff 00000007 0.00243774 *DMAC=ffffffff-ffffffff-ffffffff-ffffffff-ffffffff-ffffffff 00000008 0.00247909 *SMAC=0800270dffffff8753 00000009 0.00251931 *TYPE=0800 |
|
沙发#
发布于:2009-02-05 21:01
Type=0800表示为IP包,应该是正确的数据
|
|
|
板凳#
发布于:2009-02-05 21:15
楼上你好 为什么会有 那么多 ffff 输出呢 感觉它的输出很没有道理?
用C 不好解释?! |
|
地板#
发布于:2009-02-06 15:58
如果是广播地址则就是6个FF
|
|
|
地下室#
发布于:2009-02-07 18:37
该问题已解决,至于为什么会输出那么多fffff 是C语言编程的问题,即相同的数据在用户态下用printf以同样的格式输出,结果还是这样,当char型数据首字节为1,就会输出很多fffff,至于为什么我还解释不了
将char *buffer定义改为unsigned *buffer即可避免这种状况 |
|
5楼#
发布于:2009-03-06 11:53
printf打印char时,是会这样,其他进行了隐式类型转换,即char->int。如果char首位为1,认为是负的,在转换时,就会在前24位补1,结果就是上面的现象;如果首位为0,则补0,结果不变。
|
|