C IP 大整数和字符串相互转换

原理很简单,大整数转字符串就是一直对256取余,取整

字符串转大整数就是一直乘256

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swapStr(char *str, int left, int right) {
  int temp;
  for (; left <= right; left++, right--) {
    temp = str[left];
    str[left] = str[right];
    str[right] = temp;
  }
}
char ipstr[15] = {0};
void iptostr(unsigned int ipint) { //大整数IP转字符串IP

  char temp[4];
  int begin, end, len, cur;
  while (ipint) {
    cur = ipint % 256;
    sprintf(temp, "%d", cur);
    strcat(ipstr, temp);
    ipint /= 256;
    if (ipint) {
      strcat(ipstr, ".");
    }
  }
  len = strlen(ipstr);
  swapStr(ipstr, 0, len - 1);
  for (begin = 0, end = 0; end < len; end++, begin = end) {
    while (end < len && ipstr[end] != '.')
      end++;
    swapStr(ipstr, begin, end - 1);
  }

  puts(ipstr);
}
unsigned int ipTint() //字符串转整形
{
  long long int ip = 0;
  int i = 4, j = 0, k;
  unsigned int temp1, temp2;
  while (i) {
    temp1 = 1;
    temp2 = 0;
    while (ipstr[j] != '.' && j < strlen(ipstr)) {
      temp2 = temp2 * 10 + (ipstr[j] - '0');
      j++;
    }
    j++;
    for (k = i - 1; k > 0; k--) {
      temp1 *= 256;
    }
    ip += temp1 * temp2;
    i--;
  }

  return ip;
}

int main(void) {
  unsigned int ipint;
  scanf("%d", &ipint);
  iptostr(ipint);
  printf("%u\n", ipTint());
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值