计算广播地址时的数字错误

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之间的非负数。

以上是关于计算广播地址时的数字错误的主要内容,如果未能解决你的问题,请参考以下文章

UDP IPv4广播地址计算(附Node.js示例代码)

Android - 在动态注册的广播接收器上出现“无法传递广播”错误

从广播接收器更改片段

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

加入大数据帧和小数据帧时的广播数据帧和过滤器