发布网友 发布时间:2022-04-24 09:50
共2个回答
懂视网 时间:2022-05-11 00:11
本文实例讲述了Python简单实现子网掩码转换的方法。分享给大家供大家参考,具体如下:这里实现将子网掩码长度转换为具体的子网掩码地址:
def exchange_maskint(mask_int): bin_arr = ['0' for i in range(32)] for i in range(mask_int): bin_arr[i] = '1' tmpmask = [''.join(bin_arr[i * 8:i * 8 + 8]) for i in range(4)] tmpmask = [str(int(tmpstr, 2)) for tmpstr in tmpmask] return '.'.join(tmpmask) if __name__ == '__main__': print exchange_maskint(24)
更多Python简单实现子网掩码转换的方法介绍相关文章请关注PHP中文网!
热心网友 时间:2022-05-10 21:19
就是分别将子网掩码的每个数由10进制转2进制,方法是除基取余法,这里的基按这个问题的话就是2,如转8进制的话基就是8。
具体方法是将这个10进制数除以2,如果碰到刚好整除的话,余数就是0(余数要么是0要么是1)得到的第一个余数就是2进制数的末位,再用商来除2,得到的余数就的末位的前一位了,依次类推,直到商为0为止。举个列子,求3的二进制数,首先用3除以2,商为1,余数为1,再用商1来除以2,商为0,余数为1,就得到3的二进制数为11了。
在你问的问题中,转成的二进制数是要用8位二进制数来表示的,不足8位要在前面补0,如3的二进制数11要表示成00000011。8位二进制数的最大数是11111111,即十进制的255,所以子网掩码最大也就是255.255.255.255了,即
11111111.11111111.11111111.11111111
137/2=68余1
68/2=34余0
34/2=17余0
17/2=8余1
8/2=4余0
4/2=2余0
2/2=1余0
1/2=0余1
所以137的8位二进制就是10001001,0的8位二进制就是00000000