在python中打印数字的位表示

时间:2009-06-28 02:55:45

标签: python

我想在控制台上打印数字的位表示,以便我可以看到所有正在对位进行的操作。

我怎么能在python中做到这一点?

5 个答案:

答案 0 :(得分:67)

这种事情?

>>> ord('a')
97
>>> hex(ord('a'))
'0x61'
>>> bin(ord('a'))
'0b1100001'

答案 1 :(得分:28)

在Python 2.6 + 中:

print bin(123)

结果:

0b1111011

在python 2.x

>>> binary = lambda n: n>0 and [n&1]+binary(n>>1) or []
>>> binary(123)
[1, 1, 0, 1, 1, 1, 1]

请注意,例子来自:{Mark 3]} {/ 3>}

答案 2 :(得分:24)

来自Python 2.6 - 使用string.format method

"{0:b}".format(0x1234)
特别是

,您可能希望使用填充,以便不同数字的多个打印仍然排列:

"{0:16b}".format(0x1234)

并且使用前导0而不是空格左边填充:

"{0:016b}".format(0x1234)

来自Python 3.6 - 与f-strings

使用f-strings的相同三个例子是:

f"{0x1234:b}"
f"{0x1234:16b}"
f"{0x1234:016b}"

答案 3 :(得分:3)

答案 4 :(得分:1)

稍微偏离主题,但可能会有所帮助。为了更好地用户友好打印,我将使用自定义打印功能,定义表示字符和组间距以提高可读性。这是一个示例函数,它采用列表/数组和组宽度:

def bprint(A, grp):
    for x in A:
        brp = "{:08b}".format(x)
        L=[]
        for i,b in enumerate(brp):
            if b=="1":
                L.append("k")
            else: 
                L.append("-")
            if (i+1)%grp ==0 :
                L.append(" ")

        print "".join(L) 

#run
A = [0,1,2,127,128,255]
bprint (A,4)

输出:

---- ----
---- ---k
---- --k-
-kkk kkkk
k--- ----
kkkk kkkk