python 二进制,十进制,十六进制

来源:互联网 发布:理财大视野数据靠谱吗 编辑:程序博客网 时间:2024/05/21 22:24
  • 十进制:decimal system,每一位最高为9,达不到10

  • 二进制:binary system,每一位最高为1,达不到2

  • 八进制:octonary number system,每一位最高为7,达不到8

  • 十六进制:hexadecimal,每一位最高为 15 或者 0xf,取不到16(那就是0xG了,:-D)。

推论:

  • 如果一个数为25,则它的进制不低于6进制;

  • 自然也可以这样理解,如果一个数的某一位的取值范围为 [0,m1],则该数即为 m进制;

>>> 0b101010             # 也即python原生语法是支持二进制表示>> 0xff255            # 自然也支持八进制

向十进制转换

int(string, base)            # 第一个参数标识:需要转换的原始的数据,以字符串的形式表示            # 第二个参数标识:原始数据的base或者叫本身的进制表示            # 2:二进制            # 8:八进制            # 16:表示16进制            # 最终转化为十进制

二进制 ⇒ 十进制

>>> int('1010', 2)10

十六进制 ⇒ 十进制

>>> int('f', 16)15>>> int('0xf', 16)15>>> int('0xff', 16)255

八进制 ⇒ 十进制

>>> int('17', 8)15              # 15 = 7*8^0+1*8^1

向16进制转化

hex(string)            # 也即没有进制的设置            # 只接受10进制            # 为实现其他进制的转换,可先转换为十进制使用int()            # 返回位字符串类型
>>> hex(1033)'0x409'>>> hex(int('101010', 2))'0x2a'>>> hex(int('17', 8))'0xf'

向二进制转换

bin(十进制整型)
>>> bin(10)'0b1010'>>> bin(int('ff',16))'0b11111111'>>> bin(int('17',8))'0b1111'

向八进制转换

oct()            # 不同于hex/bin            # 通过参数进行判断            # 其是二进制、十进制、16进制            # 也即oct函数可将任意进制的数转换为8进制
>>> oct(0b1010)'012'>>> oct(11)'013'>>> oct(0xf)'017'

m进制 的转换

不断的对m求模取余,余数为当前位(低位向高位),商新的被除数,支持商为0。

例,我们以十进制的25向3进制转换;

25/3 ⇒ 8(1)
8/3 ⇒ 2(2)
2/3 ⇒ 0(2)

则25的三进制表示为 221130+231+232=25

def base(x, m):    ms = []    while x:        ms.append(x%m)        x //= m                    # python 3                    # //:表示整除,保留整数部分                    // /:得float类型    return ms

References

[1] Python 二进制,十进制,十六进制转换

0 0
原创粉丝点击