右边填充,或者对左对齐字符串进行零填充

时间:2015-10-20 09:48:02

标签: ruby string format

我有一个数值,我希望通过将其转换为二进制来创建一个字符串,然后左对齐,在右侧添加零(而不是空格)。是否可以使用单个/简单的字符串格式序列来执行此操作?

尝试包括:

"%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"

但这是最好的方法吗?

1 个答案:

答案 0 :(得分:2)

你确定要附加到右侧吗?这会改变值:

"10110100000110101001011011000000".to_i(2)
 => 3021641408

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

这就是为什么%允许'追加'只到左侧。 (因为它的目的是格式化而不是更改值)