计算广播地址时的数字错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算广播地址时的数字错误相关的知识,希望对你有一定的参考价值。
我在使用IP地址和子网掩码计算广播地址时遇到了麻烦。看起来很简单,应该只是广播= ip |〜mask,但它并不适合我的情况。我尝试使用+而不是OR运算符并使用unsigned int而不是signed,但它仍然不起作用。以下是执行此操作的代码部分,希望您能帮助我。作为IP地址和掩码[]的数组net []是以前在程序中使用的整数,并且正确输出并在我的程序内的其他操作中正常工作(将它们转换为二进制,通过使用&之间的计算网络地址等。)
int broadcast[4];
for(int i=0;i<4;i++)
broadcast[i]=net[i]|(~mask[i]);
对于192.168.50.50和255.255.0.0作为net []和mask []我期望广播为192.168.255.255,但我得到-64.-88.-1.-1
答案
您看到的输出是因为您使用了有符号值并将结果打印为有符号值。
将值的类型更改为unsigned char
并使用%hhu
进行打印。
另一答案
您应该使用unsigned char作为类型。 IP的每个部分都是0-255之间的非负数。
以上是关于计算广播地址时的数字错误的主要内容,如果未能解决你的问题,请参考以下文章