Java 整數轉換爲32位二進制字符串(左補0)

我們在看java源碼的時候,經常能看到通過位操作構造的常量。爲了更好理解源碼,我會把這些值打印出來(人肉運算估結果的旁友請忽略)。這個時候就需要用到這個方法了。java的Integer類是自帶int轉二進制字符串的,但是這個方法轉換出來的二進制字符串只會保留最高非零位以後的字符串,不滿32位。因此我再給他補個0就行。非常簡單,自己做個記錄,也方便他人。

根據自己需要傳入位數。

//i 期望轉換的整數 bitNum 期望轉換的二進制字符串位數
public class IntToBinary32Utils {
    public static String intToBinary32(int i, int bitNum){
        String binaryStr = Integer.toBinaryString(i);
        while(binaryStr.length() < bitNum){
            binaryStr = "0"+binaryStr;
        }
        return binaryStr;
    }
}

測試:

public class WhtTest {
    private static final int COUNT_BITS = Integer.SIZE - 3;
    private static final int RUNNING    = -1 << COUNT_BITS;//111
    private static final int SHUTDOWN   =  0 << COUNT_BITS;//000
    private static final int STOP       =  1 << COUNT_BITS;//001
    private static final int TIDYING    =  2 << COUNT_BITS;//010
    private static final int TERMINATED =  3 << COUNT_BITS;//011
    private static final int CAPACITY   = (1 << COUNT_BITS) - 1;



    public static void  main(String[] args){
        System.out.println("RUNNING   :"+IntToBinary32Utils.intToBinary32(RUNNING,32));
        System.out.println("SHUTDOWN  :"+IntToBinary32Utils.intToBinary32(SHUTDOWN,32));
        System.out.println("STOP      :"+IntToBinary32Utils.intToBinary32(STOP,32));
        System.out.println("TIDYING   :"+IntToBinary32Utils.intToBinary32(TIDYING,32));
        System.out.println("TERMINATED:"+IntToBinary32Utils.intToBinary32(TERMINATED,32));
        System.out.println("CAPACITY  :"+IntToBinary32Utils.intToBinary32(CAPACITY,32));

    }
}

輸出:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章