不同进制数字转换

1、十进制转换为其他进制

#将十进制数转换为二进制
def dec2bin(dec):
    if checkdec(dec):
        return str(bin(int(dec)))
#将十进制数转换为八进制
def dec2oct(dec):
    if checkdec(dec):
        return str(oct(int(dec)))

#将十进制数转换为十六进制
def dec2hex(dec):
    if checkdec(dec):
        return str(hex(int(dec)))
#校验十进制数字
def checkdec(dec):
    matchobj = re.match(r'(0[dD])?[0-9]+$',dec)
    if matchobj:
        return True
    else:
        return False

测试用例

class DecMethodsTest(unittest.TestCase):
    def test_dec2bin(self):
        self.assertEqual(IPNumConvertMethods.dec2bin('10'),'0b1010')

    def test_dec2oct(self):
        self.assertEqual(IPNumConvertMethods.dec2oct('10'),'0o12')

    def test_dec2hex(self):
        self.assertEqual(IPNumConvertMethods.dec2hex('10'), '0xa')

2、二进制转换为其他进制

#将二进制数转换为十进制
def bin2dec(bin):
    if checkbin(bin):
        return str(int(bin, 2))
    else:
        return ""

#将二进制数转换为八进制
def bin2oct(bin):
    if checkbin(bin):
        return str(oct(int(bin, 2)))
    else:
        return ""

#将二进制数转换为十六进制
def bin2hex(bin):
    if checkbin(bin):
        return str(hex(int(bin, 2)))
    else:
        return ""

#校验二进制数字
def checkbin(bin):
    matchobj = re.match(r'(0[bB])?[0-1]+$',bin)
    if matchobj:
        return True
    else:
        return False

测试用例

class BinMethodsTest(unittest.TestCase):
    def test_bin2dec(self):
        self.assertEqual(IPNumConvertMethods.bin2dec('1010'),'10')

    def test_bin2oct(self):
        self.assertEqual(IPNumConvertMethods.bin2oct('1010'), '0o12')

    def test_bin2hex(self):
        self.assertEqual(IPNumConvertMethods.bin2hex('1010'), '0xa')

3、八进制转换为其他进制

#将八进制数转换为十进制
def oct2dec(oct):
    if checkoct(oct):
        return str(int(oct,8))
    else:
        return ""
#将八进制数转换为二进制
def oct2bin(oct):
    if checkoct(oct):
        return str(bin(int(oct,8)))
    else:
        return ""
#将八进制数转换为十六进制
def oct2hex(oct):
    if checkoct(oct):
        return str(hex(int(oct,8)))
    else:
        return ""
#校验八进制数字
def checkoct(oct):
    matchobj = re.match(r'(0[oO])?[0-7]+$',oct)
    if matchobj:
        return True
    else:
        return False

测试用例

class OctMethodsTest(unittest.TestCase):
    def test_oct2bin(self):
        self.assertEqual(IPNumConvertMethods.oct2bin('12'),'0b1010')

    def test_oct2dec(self):
        self.assertEqual(IPNumConvertMethods.oct2dec('12'),'10')

    def test_oct2hex(self):
        self.assertEqual(IPNumConvertMethods.oct2hex('0o12'),'0xa')

4、十六进制转换为其他进制

#将十六进制数转换为十进制
def hex2dec(hex):
    if checkhex(hex):
        return str(int(hex,16))
    else:
        return ""
#将十六进制数转换为二进制
def hex2bin(hex):
    if checkhex(hex):
        return str(bin(int(hex,16)))
    else:
        return ""
#将十六进制数转换为八进制
def hex2oct(hex):
    if checkhex(hex):
        return str(oct(int(hex,16)))
    else:
        return ""
       
#校验十六进制
def checkhex(hex):
    matchobj = re.match(r'(0[xX])?[0-9a-fA-F]+$',hex)
    if matchobj:
        return True
    else:
        return False

测试用例

class HexMethodsTest(unittest.TestCase):

    def test_hex2bin(self):
        self.assertEqual(IPNumConvertMethods.hex2bin('0xa'),'0b1010')

    def test_hex2dec(self):
        self.assertEqual(IPNumConvertMethods.hex2dec('0xa'),'10')

    def test_hex2hex(self):
        self.assertEqual(IPNumConvertMethods.hex2oct('0xa'),'0o12')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值