1 #include
2 #include
3 #include
4
5 //ipv4地址转换
6 int ipv4_to_i(const char *ip, unsigned int *ipv4_addr)
7 {
8 char str_ip_index[4] = {'\0'};
9 unsigned int ip_int, ip_add = 0;
10 unsigned int j = 0, a = 3, i = 0;
11
12 for(i = 0; i <= strlen(ip); i++) {
13 if (ip[i] == '\0' || ip[i] == '.') {
14 ip_int = atoi(str_ip_index);
15 if (ip_int > 255)
16 return 0;
17
18 ip_add += (ip_int * pow(256, a));
19 a--;
20 memset(str_ip_index, 0, sizeof(str_ip_index));
21
22 j = 0;
23 continue;
24 }
25
26 str_ip_index[j] = ip[i];
27 j++;
28 }
29
30 *ipv4_addr = ip_add;
31
32 return 1;
33 }
34
35 /* ipv6 无符号整型数组转化为字符串 */
36 void ipv6_to_str(char *addr_str, unsigned int ipv6_addr[])
37 {
38 /* ipv6地址128位,数组ip维数默认为4 */
39 /* 输出格式为: A:B:C:D:E:F:G:H. */
40 int i;
41 unsigned short msw, lsw;
42 char *addr_str_end_ptr;
43
44 addr_str[0] = '\0';
45 addr_str_end_ptr = addr_str;
46 for (i = 0; i < 4; i++)
47 {
48 msw = ipv6_addr[i] >> 16;
49 lsw = ipv6_addr[i] & 0x0000ffff;
50 addr_str_end_ptr += sprintf(addr_str_end_ptr, "%X:%X:", msw, lsw);
51 }
52 *(addr_str_end_ptr - 1) = '\0';
53 }
54
55 char * string_white_space_trim(char *str)
56 {
57 /* 移除字符串中空格 */
58 int index;
59 int new_index;
60 int str_length;
61
62 str_length = strlen(str);
63
64 for (index = 0, new_index = 0; index < str_length; index++)
65 {
66 if (!isspace((unsigned char)str[index]))
67 {
68 str[new_index] = str[index];
69 new_index++;
70 }
71 }
72
73 str[new_index] = '\0';
74
75 return