如何将十进制值转换为格式化二进制值和十六进制值
通常我会这样做
binary = lambda n: '' if n==0 else binary(n/2) + str(n%2)
print binary(17)
>>>> 10001
print binary(250)
>>>> 11111010
但是我希望给出任何给定值的8位二进制数字(仅限0-255),即我需要追加' 0'到二进制数的开头,如下面的例子
7 = 0000 1111
10 = 0000 1010
250 = 1111 1010
甚至我需要转换为以0x
开头的十六进制7 = 0x07
10 = 0x0A
250 = 0xFA
答案 0 :(得分:2)
替代解决方案是使用string.format
>>> '{:08b}'.format(250)
'11111010'
>>> '{:08b}'.format(2)
'00000010'
>>> '{:08b}'.format(7)
'00000111'
>>> '0x{:02X}'.format(7)
'0x07'
>>> '0x{:02X}'.format(250)
'0xFA'
答案 1 :(得分:1)
您可以使用内置函数bin()
和hex()
,如下所示:
In[95]: bin(250)[2:]
Out[95]: '11111010'
In[96]: hex(250)
Out[96]: '0xfa'
答案 2 :(得分:1)
你可以分别使用bin(),hex()分别为二进制和十六进制小数,并使用string.zfill()函数来实现8位二进制数。
>>> bin(7)[2:].zfill(8)
'00000111'
>>> bin(10)[2:].zfill(8)
'00001010'
>>> bin(250)[2:].zfill(8)
'11111010'
>>>
>>> hex(7)
'0x7'
>>> hex(10)
'0xa'
>>> hex(250)
'0xfa'
我假设在十六进制中不需要前导0。
答案 3 :(得分:0)
您可以使用格式:
'{:08b}'.format(5)
'{:#x}'.format(12)