永发信息网

sin_addr.S_un.S_addr=(90<<24)|(25<<16)|(14<<8)|10; 是怎么储存ip地址的

答案:1  悬赏:40  手机版
解决时间 2021-05-08 03:22
  • 提问者网友:刺鸟
  • 2021-05-07 03:04

struct in_addr{
   union {
     struct{
      unsigned char s_b1,
      s_b2,
      s_b3,             s_b4;
    } S_un_b;
    struct {
   unsigned short s_w1,                                      s_w2;
    }S_un_w;
    unsigned long S_addr;
          }S_un;
  };

其中S_un_w 和S_un是怎么存放ip地址的?

最佳答案
  • 五星知识达人网友:雾月
  • 2021-05-07 04:21

这是一个联合体。三个结构体S_un_b、S_un_w、S_un共用一个4字节内存区。


sin_addr.S_un.S_addr=(90<<24)|(25<<16)|(14<<8)|10=0x5a190e0a也就是ip地址10.14.25.90。


90存在最高字节,25存在次高字节,14存在次低字节,10存在最低字节;


也就是


sin_addr.S_un_b.s_b1=10,


sin_addr.S_un_b.s_b2=14,


sin_addr.S_un_b.s_b3=25,


sin_addr.S_un_b.s_b4=90,


也就是


sin_addr.S_un_w.s_w1=(14<<8)|10=3594,


sin_addr.S_un_w.s_w2=(90<<24)|(25<<16)=23065。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯