隔空演唱怎么做: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:1490<<24为90左移24位
|按位或运算。
(90<<24)|(25<<16)|(14<<8)|10相当于一个四字节长整型数,90放在该长