3.26.2014

[JS] 字串補零??

最近工作上遇到的,需要一個這樣的技巧:從Web Server後端傳回一個值,要把這個值轉成2進位。

例如:傳回的值是10進制的90,要把它轉成2進位的01011010。要轉成2進制不難,可善用toString(2)這個方法;不過,只會顯示成1011010,只有7個bit,但我需要的是8個bit,所以前面務必要再補一個0。解決這個問題的方法函式如下:
function LeftPadZero(NUM, BIT)
{
 return (Array(BIT).join(0) + NUM).slice(-BIT);
}
LeftPadZero()這個函式要傳進兩個參數:第一個NUM是要被改變的字串;第二個BIT則是所要呈現的字串需要幾個位元

以自己的需求為例:傳進去的NUM為"1011010";我所需要的BIT數為"8"。

首先,(Array(BIT).join(0) + NUM)就是先使用一個陣列,陣列裡面有8個元素;且把0加進到這個陣列裡面;再把原始的字串串接上去,所以結果會是:000000001011010。最後的slice(-8)方法表示從後面取8個BIT,結果就變成"01011010"。這就是我原本所想要的!!

從函式的名稱LeftPadZero()可以判斷出這個是「左邊補0」;假如我要「右邊補0」呢?? 可以改寫如下:
function RightPadZero(NUM, BIT)
{
 return (NUM + Array(BIT).join(0)).slice(0, BIT);
}
(NUM + Array(BIT).join(0))的結果就是NUM:1011010,再加上陣列裡的8個0;變成"101101000000000";slice()方法的第一個參數0,是指起始位置從0開始,第二個參數BIT則是結束位置。最後的結果就會變成:"10110100"。

沒有留言:

張貼留言