c语言十六进制整型转为指针,C语言 IPv6 十六进制 转 十进制

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值