2015-10-20 205 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 ...' 這就是說你的理由爲什麼它不會允許這是有道理的。 –