将IP地址转换成十进制整数,或者将十进制整数转换成IP地址,在网络编程中经常会遇到,其中的转换算法非常简单,利用强大的Python,更是只需要1-2行代码就搞定了。
IP地址转换成整数算法
1. 将 IP(A.B.C.D) 地址按照“."分割成4部分;
2. 分别将分割的四部分(A, B, C, D)转换成正整数 a, b, c, d(它们的取值范围为0-255,一个字节就可以存储);
3. 将分割的四个整数a, b, c, d 分别作为32位正整数的4个字节,由高到低保存。
整数转换成IP地址算法
1. 取32位整数的4个字节作为单独的整数 a, b, c, d;
2. 将 a, b, c, d 分别作为 IP 地址的字符串 A, B, C, D;
3. 转化成IP地址形式 A.B.C.D。
# -*- coding: cp936 -*-
IP = "192.168.10.1"
def addr2dec(addr):
"将点分十进制IP地址转换成十进制整数"
items = [int(x) for x in addr.split(".")]
return sum([items[i] << [24, 16, 8, 0][i] for i in range(4)])
def dec2addr(dec):
"将十进制整数IP转换成点分十进制的字符串IP地址"
return ".".join([str(dec >> x & 0xff) for x in [24, 16, 8, 0]])
dec = addr2dec(IP)
print dec
print dec2addr(dec)
3232238081
192.168.10.1
list2 = []
for item in list1:
item = bin(int(item)) ---0b11000000 0b10101000 0b1100000 0b1011110 ----
# 去掉每段二进制前的...
我们知道
ip地址
实际上是32位二进制数,例如:
点分十进
IP地址
100.4.5.6 <---->32位二进制数01100100.00000100.00000101.00000110
若将32位二进制数
转换
为
十进制
,就得到了数字地址。
简单来...
一个
IP地址
是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的
IP地址
转换
为
十进制
格式表示的
IP地址
输出。
输入格式:
输入在一行中给出32位二进制字符串。
输出格式:
在一行中输出
十进制
格式的
IP地址
,其由4个
十进制
数组成(分别对应4个8位的二进制数),中间用“.”分隔开。
输入样例:
11001100100101000001010101110010
输出样例:
204.148.21.114
思路:把四个字节分别截取出来,再将二进制转化成
十进制
。
代码
如下:
#include
输入一个以“#”结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其
转换
为
十进制
数后输出。如果过滤后字符串的首字符为“-”,代表该
感觉题意有点不清,“如果过滤后字符串的首字符为“-””有点模糊,迷迷糊糊就做了。。。。。下面的
代码
是按照第一个十六进制字符之前是否有“-”做的。
#include <stdio.h>
int main(...
using namespace std;
bool check(char *str); //检查串中是否有0/1之外的字符
int trans(char *str); //将0/1字符串
转换
成
十进制
bool check(char *str)
int i;
for(i=0;i<32;i++)
if(str[i
一个
IP地址
是由四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的
IP地址
转换
为
十进制
格式表示的
IP地址
输出。如果输入的数字不足32位或超过32位或输入的数字中有非0和1的数字时输出“data error!”。
要求:综合使用列表,集合和生成式。
个人能力有限,仅供参考,共同学习!......