xylz,imxylz

          關注后端架構、中間件、分布式和并發(fā)編程

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            111 隨筆 :: 10 文章 :: 2680 評論 :: 0 Trackbacks

          6-11. Conversion.

          Create a program that will convert from an integer to an Internet Protocol (IP) address in the four-octet format of WWW.XXX.YYY.ZZZ.

          Update your program to be able to do the vice versa of the above.
           

           1#!/usr/bin/env python
           2#-*- coding:utf-8 -*-
           3#$Id: p0611.py 139 2010-05-21 09:45:30Z xylz $
           4
           5'''
           6This is a 'python' study plan for xylz.
           7Copyright (C)2010 xylz (www.imxylz.info)
           8'''
           9
          10def convertIp2Str(ip):
          11    return '.'.join( ( str((ip>>i) &0xFFfor i in (24,16,8,0)) )
          12
          13def convertStr2Ip(s):
          14    r=0
          15    for i,v in enumerate(s.split('.')):
          16        r |= ( int(v) << (24-i*8))
          17    return r
          18
          19
          20if __name__ == '__main__':
          21    '''
          22    Convert ip from Integer number to string and do it versa.
          23    '''
          24    sip = '192.168.1.1'
          25    ip = convertStr2Ip(sip)
          26    sip2 = convertIp2Str(ip)
          27    print sip,ip,sip2
          很顯然這里沒有對IP有效性進行校驗,這里假設IP地址都是有效的。
          在11行,首先構造一個4個數(shù)的迭代器,對于迭代器里面的每一項,將ip整數(shù)往右移一個字節(jié),然后與0xFF,這樣就得到了每一項的值。然后同string.join(s)將一個迭代器或者列表連接起來,構成一個"xxx.xxx.xxx.xxx"格式的字符串。

          ©2009-2014 IMXYLZ |求賢若渴
          posted on 2010-05-27 11:42 imxylz 閱讀(16718) 評論(0)  編輯  收藏 所屬分類: Python

          ©2009-2014 IMXYLZ
          主站蜘蛛池模板: 明溪县| 道真| 上杭县| 辉县市| 永城市| 浦城县| 昂仁县| 乌拉特后旗| 那曲县| 邯郸县| 郸城县| 金华市| 临清市| 岳阳市| 台江县| 泸定县| 龙山县| 嘉鱼县| 封丘县| 枣强县| 石阡县| 沾化县| 维西| 米易县| 四子王旗| 晴隆县| 报价| 明光市| 喀喇| 宝山区| 布拖县| 汉沽区| 昆山市| 夏津县| 陆丰市| 安多县| 临夏县| 崇礼县| 库伦旗| 靖宇县| 阳原县|