在以下代码中,addr_min
和addr_max
是代表IPv4地址的32位无符号值,并且它们按网络字节顺序(即big-endian格式:]]
uint32_t addr; for (addr = addr_min; addr <= addr_max; addr = addr + htonl(1)) { ... }
因此,假设我要遍历地址
1.2.0.0
并逐渐增加第三个和第四个八位位组,从而总共产生65534个地址(打印时显示addr_max
表示feff0201)。我期望上面的代码可以工作,相反,它只会将第四个八位字节更改为值0xfe,并且从不接触第三个八位字节。我可能做错了什么?
在以下代码中,addr_min和addr_max是代表IPv4地址的32位无符号值,并且它们以网络字节顺序(即,大端顺序格式):uint32_t addr;对于(addr = addr_min; addr&...
您无意对已经以网络字节顺序编码的值进行任何算术运算。在这种情况下,您可能只会添加到最高位字节。
快速的答案是: