C语言random函数
发布网友
发布时间:2022-05-07 13:47
我来回答
共1个回答
热心网友
时间:2023-11-03 17:17
s_addr是一个long型的变量,当然可以用random的返回值进行赋值。结构体如下:
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;////////////////////////////////////////这里
} S_un;
} in_addr;
IP地址本来就是一个32位整数,只不过为了方便记忆和查看,将8位作为一组,每组用10进制数字表示,并且用'.'隔开。比如:0.0.0.3,对应的32位二进制数为:0000000000.....111(前面有29个0),s_addr就是记录这个二进制数的。
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;
这个是用4个10进制数表示的IP地址,
s_un_b.s_b1=0
s_un_b.s_b2=0
s_un_b.s_b3=0
s_un_b.s_b4=3
就是IP地址"0.0.0.3"了,系统负责将它转换为32位二进制数。
struct {u_short s_w1,s_w2;} S_un_w;
这个是指前16位作为一部分,后面16位作为一个部分。".0.0.0.3"前面16位作为一个部分值为0,后面的部分值为3,所以:
s_un_w.s_w1=0;
s_un_w.s_w2=3;追问那么请问,如果我不用random函数,而是直接给s_addr赋值应该怎么写。比如192.168.1.200这个IP,是直接把IP写上去呢还是写成二进制数?
追答unsigned long inet_addr( const char* cp);
这个函数可以把分组表示的IP地址转换为unsigned long。例如:
ip_src.s_addr=inet_addr("192.168.1.200");
如果IP地址是字符串型的,直接转为unsigned long方便些。如果是分开来的数字,用
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;方便些吧。
热心网友
时间:2023-11-03 17:17
s_addr是一个long型的变量,当然可以用random的返回值进行赋值。结构体如下:
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;////////////////////////////////////////这里
} S_un;
} in_addr;
IP地址本来就是一个32位整数,只不过为了方便记忆和查看,将8位作为一组,每组用10进制数字表示,并且用'.'隔开。比如:0.0.0.3,对应的32位二进制数为:0000000000.....111(前面有29个0),s_addr就是记录这个二进制数的。
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;
这个是用4个10进制数表示的IP地址,
s_un_b.s_b1=0
s_un_b.s_b2=0
s_un_b.s_b3=0
s_un_b.s_b4=3
就是IP地址"0.0.0.3"了,系统负责将它转换为32位二进制数。
struct {u_short s_w1,s_w2;} S_un_w;
这个是指前16位作为一部分,后面16位作为一个部分。".0.0.0.3"前面16位作为一个部分值为0,后面的部分值为3,所以:
s_un_w.s_w1=0;
s_un_w.s_w2=3;追问那么请问,如果我不用random函数,而是直接给s_addr赋值应该怎么写。比如192.168.1.200这个IP,是直接把IP写上去呢还是写成二进制数?
追答unsigned long inet_addr( const char* cp);
这个函数可以把分组表示的IP地址转换为unsigned long。例如:
ip_src.s_addr=inet_addr("192.168.1.200");
如果IP地址是字符串型的,直接转为unsigned long方便些。如果是分开来的数字,用
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;方便些吧。
热心网友
时间:2023-11-03 17:17
s_addr是一个long型的变量,当然可以用random的返回值进行赋值。结构体如下:
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;////////////////////////////////////////这里
} S_un;
} in_addr;
IP地址本来就是一个32位整数,只不过为了方便记忆和查看,将8位作为一组,每组用10进制数字表示,并且用'.'隔开。比如:0.0.0.3,对应的32位二进制数为:0000000000.....111(前面有29个0),s_addr就是记录这个二进制数的。
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;
这个是用4个10进制数表示的IP地址,
s_un_b.s_b1=0
s_un_b.s_b2=0
s_un_b.s_b3=0
s_un_b.s_b4=3
就是IP地址"0.0.0.3"了,系统负责将它转换为32位二进制数。
struct {u_short s_w1,s_w2;} S_un_w;
这个是指前16位作为一部分,后面16位作为一个部分。".0.0.0.3"前面16位作为一个部分值为0,后面的部分值为3,所以:
s_un_w.s_w1=0;
s_un_w.s_w2=3;追问那么请问,如果我不用random函数,而是直接给s_addr赋值应该怎么写。比如192.168.1.200这个IP,是直接把IP写上去呢还是写成二进制数?
追答unsigned long inet_addr( const char* cp);
这个函数可以把分组表示的IP地址转换为unsigned long。例如:
ip_src.s_addr=inet_addr("192.168.1.200");
如果IP地址是字符串型的,直接转为unsigned long方便些。如果是分开来的数字,用
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;方便些吧。
热心网友
时间:2023-11-03 17:17
s_addr是一个long型的变量,当然可以用random的返回值进行赋值。结构体如下:
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;////////////////////////////////////////这里
} S_un;
} in_addr;
IP地址本来就是一个32位整数,只不过为了方便记忆和查看,将8位作为一组,每组用10进制数字表示,并且用'.'隔开。比如:0.0.0.3,对应的32位二进制数为:0000000000.....111(前面有29个0),s_addr就是记录这个二进制数的。
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;
这个是用4个10进制数表示的IP地址,
s_un_b.s_b1=0
s_un_b.s_b2=0
s_un_b.s_b3=0
s_un_b.s_b4=3
就是IP地址"0.0.0.3"了,系统负责将它转换为32位二进制数。
struct {u_short s_w1,s_w2;} S_un_w;
这个是指前16位作为一部分,后面16位作为一个部分。".0.0.0.3"前面16位作为一个部分值为0,后面的部分值为3,所以:
s_un_w.s_w1=0;
s_un_w.s_w2=3;追问那么请问,如果我不用random函数,而是直接给s_addr赋值应该怎么写。比如192.168.1.200这个IP,是直接把IP写上去呢还是写成二进制数?
追答unsigned long inet_addr( const char* cp);
这个函数可以把分组表示的IP地址转换为unsigned long。例如:
ip_src.s_addr=inet_addr("192.168.1.200");
如果IP地址是字符串型的,直接转为unsigned long方便些。如果是分开来的数字,用
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;方便些吧。