隔空演唱怎么做:IP地址存储问题

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 23:30:20

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

[ 标签:socket,编程,sin ]

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地址的?

满意答案

好评率:100%

这是一个联合体。三个结构体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。

提问人的追问   2010-08-01 15:10

(90<<24)|(25<<16)|(14<<8)|10=0x5a190e0a是什么运算呢

(90<<24)|(25<<16)|(14<<8)|10是什么意思?

回答人的补充   2010-08-01 15:14

90<<24为90左移24位

|按位或运算。

(90<<24)|(25<<16)|(14<<8)|10相当于一个四字节长整型数,90放在该长