2015-10-20 207 views
1

我有一个数字值,我想创建一个字符串,将其转换为二进制然后左对齐,将零(而不是空格)附加到右侧。是否可以用单个/简单的字符串格式序列来做到这一点?右填充或零填充左对齐的字符串

尝试包括:

"%032b" % 94426294 #=> "00000101101000001101010010110110" 
"%-032b" % 94426294 #=>"101101000001101010010110110  " 
"%0-32b" % 94426294 #=>"101101000001101010010110110  " 
"%-032b0" % 94426294 #=>"101101000001101010010110110  0" 
"%-b032" % 94426294 #=>"101101000001101010010110110032" 
"%-032.30b" % 94426294 #=>"000101101000001101010010110110 " 
format("%-32b",94426294) #=>"101101000001101010010110110  " 
format("%-32.32b",94426294) #=>"00000101101000001101010010110110" 

我能得到我想要的东西像

("%b" % 94426294).ljust(32,'0') #=>"10110100000110101001011011000000" 

但是这是最好的方法是什么?

回答

2

确定要追加到右侧吗?这会改变该值:

"10110100000110101001011011000000".to_i(2) 
=> 3021641408 

我认为你的解决方案是最短的。 这听起来对我来说是合理的,你不能格式某些值更改它的值在同一时间

这就是为什么%只允许“追加”到左侧。 (因为其目的是格式化并且不改变该值)

+0

是的;我打算从左边/最有意义的几个小组中解析它,在一个我不希望超过几个步骤的过程中,它不像我最终得到的那样具有特殊价值那么重要与各种可区分的值,而不是说,10000个值,其中前5-7位全部是'000 ...' 这就是说你的理由为什么它不会允许这是有道理的。 –