加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中打印出c类型的二进制表示

发布时间:2020-12-16 21:37:11 所属栏目:Python 来源:网络整理
导读:我在C/C++中有以下编号,例如,0x0202020202ULL,我想以二进制形式1000000010000000100000001000000010打印出来. 能否请你帮忙? 解决方法 您可以使用切片(或str.rstrip),int和format的组合. inp = '0x0202020202UL' format(int(inp[:-2],16),'b')'100000001000
我在C/C++中有以下编号,例如,0x0202020202ULL,我想以二进制形式1000000010000000100000001000000010打印出来.

能否请你帮忙?

解决方法

您可以使用切片(或str.rstrip),int和format的组合.
>>> inp = '0x0202020202UL'
>>> format(int(inp[:-2],16),'b')
'1000000010000000100000001000000010'
# Using `str.rstrip`,This will work for any hex,not just UL
>>> format(int(inp.rstrip('UL'),'b')
'1000000010000000100000001000000010'

更新:

from itertools import islice
def formatted_bin(inp):
   output = format(int(inp.rstrip('UL'),'b')
   le = len(output)
   m = le % 4
   padd = 4 - m if m != 0 else 0
   output  = output.zfill(le + padd)
   it = iter(output)
   return ' '.join(''.join(islice(it,4)) for _ in xrange((le+padd)/4))

print formatted_bin('0x0202020202UL')
print formatted_bin('0x10')
print formatted_bin('0x101010')
print formatted_bin('0xfff')

输出:

0010 0000 0010 0000 0010 0000 0010 0000 0010
0001 0000
0001 0000 0001 0000 0001 0000
1111 1111 1111

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读