xylz,imxylz

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

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            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個數的迭代器,對于迭代器里面的每一項,將ip整數往右移一個字節,然后與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
          主站蜘蛛池模板: 蓝山县| 新疆| 顺昌县| 铁力市| 新和县| 长白| 通河县| 台中县| 恩施市| 蒲城县| 三都| 桐城市| 辉南县| 南京市| 金秀| 忻州市| 乌鲁木齐市| 阿克| 丹棱县| 石台县| 安国市| 南江县| 前郭尔| 全州县| 唐山市| 镇安县| 乾安县| 汝城县| 河北区| 大余县| 台北县| 湖州市| 拉萨市| 桃园县| 临猗县| 兴和县| 苏尼特右旗| 沂南县| 禹城市| 无为县| 衡南县|