代码之家  ›  专栏  ›  技术社区  ›  charelf

将十六进制转换为二进制,反之亦然,但保持它们为整数

  •  0
  • charelf  · 技术社区  · 6 年前

    我知道如何使用bin函数将十六进制整数转换成二进制字符串,但是有没有简单的方法将十六进制整数转换成二进制 ?

    措辞不同,有没有一种简单的方法来转换二进制整数的字符串表示形式( "0b111" )转换为表示二进制整数的整数( 0b111 )

    使用bin()会产生十六进制字符串

    >>> bin(0x7)
    '0b111'
    >>> type(bin(0x7))
    <class 'str'>
    

    >>> magic(0x7)
    0b111
    >>> type(magic(0x7))
    <class 'int'>
    

    (magic函数只是一个占位符,本质上我想要一种将二进制整数的字符串表示形式转换为二进制整数的方法)

    • 问题1: 这有可能吗?如果有,怎么可能?
    • 问题2: 这样做有意义吗?使用十六进制数和二进制数的字符串表示法或整数表示法更好吗?
    1 回复  |  直到 6 年前
        1
  •  1
  •   Zohar Meir    6 年前

    你所说的“十六进制整数”和“二进制整数”之间没有区别——它们都只是整数:

    >>> 0x07
    7
    >>> 0b111
    7
    >>> type(0x07)
    <type 'int'>
    >>> type(0b111)
    <type 'int'>
    >>> 0x07 == 0b111
    True
    >>> 0x07 is 0b111  # This is true in the special case of small integers
    True
    

    这个 0x 0b

    至于将整数的二进制字符串表示形式转换为实际整数,可以使用 int(string, base) :

    >>> int('0b111', 2)
    7