将二进制List <string []>转换为二进制byte [] java,结果准确

时间:2015-10-17 12:23:41

标签: java list arraylist

我想将二进制List转换为二进制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

我犯了哪个部分?有人可以帮忙吗? 因为无论我尝试过,当我将它转换为int时,String中的0总是消失。当我们转换为int时,是否可以使String中的0不会消失?如果是,怎么样?

1 个答案:

答案 0 :(得分:1)

不要混淆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"格式说明符表示从一个宽四个字符的int中打印一个字符串,该字符串具有前导0&#39。

编辑:我忘了在格式字符串中添加%n,因为您也希望打印一个新行。现已添加。