IP转换为十进制数

2 篇文章 0 订阅
1 篇文章 0 订阅

遇到问题即解决问题:

在c#和js两种环境下作ip地址转换:

c#中:

public Queue GetIPAddressQueue(string firstIP, string lastIP)
        {
        //拆ip地址
            var firstIPArray = firstIP.Split('.');
            var lastIPArray = lastIP.Split(',');

		//获取十进制IP地址
            long firstIPNum = (long.Parse(firstIPArray[0]) << 24) +
                        (long.Parse(firstIPArray[1]) << 16) +
                        (long.Parse(firstIPArray[2]) << 8) +
                        (long.Parse(firstIPArray[3]));
            long lastIPNum = (long.Parse(lastIPArray[0]) << 24) +
                        (long.Parse(lastIPArray[1]) << 16) +
                        (long.Parse(lastIPArray[2]) << 8) +
                        (long.Parse(lastIPArray[3]));

            Queue queue = null;
		//获取区间内所有IP地址,通过IPAddress类转换为字符串
            for (long i = firstIPNum; i <= lastIPNum; i++)
            {
                IPAddress ipAddress = new IPAddress(BitConverter.GetBytes(Convert.ToUInt32(i)).Reverse().ToArray());
                queue.Enqueue(ipAddress);
            }
            return queue;
        }

js中实现的方式是相同的,但是js中没有long类型,所以在转换的时候需要作处理:

var firstIPSize = parseInt(firstIPArray[0] , 10)*256*256*256 + parseInt(firstIPArray[1] , 10)*256*256 + parseInt(firstIPArray[2] ,10)*256+ parseInt(firstIPArray[3],10);
var lastIPSize = parseInt(lastIPArray[0] , 10)*256*256*256 + parseInt(lastIPArray[1] , 10)*256*256 + parseInt(lastIPArray[2] ,10)*256 + parseInt(lastIPArray[3],10);

使用parseInt(value,位数);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码将IP地址(点分十进制转换十进制: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char ip[16]; int a, b, c, d, result; printf("请输入IP地址(点分十进制):"); scanf("%s", ip); sscanf(ip, "%d.%d.%d.%d", &a, &b, &c, &d); result = (a << 24) + (b << 16) + (c << 8) + d; printf("转换后的十进制为:%d\n", result); return ; } ### 回答2: 当我们使用计算机进行网络通信时,经常需要将IP地址(点分十进制转换十进制。下面是一个使用C语言编写的函,可以实现此功能。 ```c #include <stdio.h> // 函:将IP地址(点分十进制转换十进制 long ipToDecimal(const char* ipAddress) { int a, b, c, d; sscanf(ipAddress, "%d.%d.%d.%d", &a, &b, &c, &d); long decimal = (a << 24) + (b << 16) + (c << 8) + d; return decimal; } int main() { char ipAddress[16]; printf("请输入IP地址(点分十进制):"); scanf("%s", ipAddress); long decimal = ipToDecimal(ipAddress); printf("转换后的十进制为:%ld\n", decimal); return 0; } ``` 在该程序中,我们定义了一个`ipToDecimal`函,接收一个字符串类型的IP地址(点分十进制),然后使用`sscanf`函IP地址中的每个值提取并存储到四个整型变量中。接着,我们通过位移运算以及加法运算将四个值合并成一个长整型的十进制。最后,在`main`函中,我们通过`scanf`函获取用户输入的IP地址并调用`ipToDecimal`函进行转换,然后输出转换后的十进制。 希望以上的代码能够帮到您! ### 回答3: 在C语言中,可以使用以下代码将IP地址(点分十进制转换十进制: ```c #include<stdio.h> #include<string.h> #include<stdlib.h> unsigned long ipToDecimal(char *ip) { unsigned long decimal = 0; int i, j; char *token; // 使用strtok函IP地址按照“.”进行分割 token = strtok(ip, "."); i = 3; while(token != NULL) { // 将每一个分割出的子串转换为整 int part = atoi(token); // 确保每个部分的值在合法范围内 if(part < 0 || part > 255) { printf("无效的IP地址!"); exit(1); } // 将每个部分的十进制进行左移和累加 decimal += part << (8 * i); i--; token = strtok(NULL, "."); } return decimal; } int main() { char ip[20]; unsigned long decimal; printf("请输入IP地址(点分十进制):"); scanf("%s", ip); // 调用函IP地址转换十进制 decimal = ipToDecimal(ip); printf("IP地址的十进制表示为:%lu\n", decimal); return 0; } ``` 使用该代码,首先输入一个IP地址(点分十进制表示),然后调用`ipToDecimal()`函将其转换为对应的十进制。最后,通过输出语句打印出该十进制。 注意:在实际使用中,应该考虑到错误处理和异常情况。以上代码仅提供最基本的功能,可能并未处理所有可能出现的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值