簡體   English   中英

轉換二進制列表 <String[]> 到二進制字節[] java並獲得確切結果

[英]Convert binary List<String[]> to binary byte[] java with exact result

我想將二進制列表轉換為二進制int []。 我的代碼如下:

public class BinListToIntArr {
    public static void main(String[] args) {
        List<String[]> arrList = new ArrayList<>();

        //fill it
        arrList.add(new String[] {"0011","1100","1111","1111","0000"});
        arrList.add(new String[] {"0101","1111","1010","0000","0101"});
        arrList.add(new String[] {"1111","1010","0000","0101","1111"});
        arrList.add(new String[] {"1010","0000","1111","0101","1100"});
        arrList.add(new String[] {"0000","1110","1100","0001","0011"});

        //convert it
        ArrayList<Integer> ints = new ArrayList<>();
        for (String[] array : arrList) {
            for (String str : array) {
                ints.add(Integer.parseInt(str));
            }
        }

        Integer[] result = ints.toArray(new Integer[] {});

        for (int i : result){
            System.out.println(i);
        }
    }
}

結果應該是:

0011
1100
1111
1111
0000
1010
1111
1010
0000
1010
1111
1010
0000
1010
1111
1010
0000
1111
1010
1100
0000
1110
1100
1000
1100

但是我得到了這個結果:

11
1100
1111
1111
0
101
1111
1010
0
101
1111
1010
0
101
1111
1010
0
1111
101
1100
0
1110
1100
1
11

我在哪一部分犯了錯誤? 有沒有人可以幫忙? 因為無論我如何嘗試,將String轉換為int時,String中的0始終會消失。 轉換為int時是否可以使String中的0不消失? 如果是,怎么辦?

不要混淆int和int的String表示形式,因為int只是一個數字,將永遠無法理解或存儲前導0之類的內容。 如果要顯示前導0,則格式化輸出。 String.format(...)或System.out.printf(...)可以正常工作,例如:

  for (int i : result) {
     System.out.printf("%04d%n", i);
  }

哪個輸出:

0011
1100
1111
1111
0000
0101
1111
1010
0000
0101
1111
1010
0000
0101
1111
1010
0000
1111
0101
1100
0000
1110
1100
0001
0011

"%04d"格式說明符說從一個4字符寬且前導0的整數打印一個字符串。

編輯:由於您也希望打印新行,因此我忘記在字符串格式中添加%n 現在已添加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM