(Java) Specify number of bits (length) when converting binary number to string?

后端 未结 8 1156
有刺的猬
有刺的猬 2020-12-30 13:03

I\'m trying to store a number as a binary string in an array but I need to specify how many bits to store it as.

For example, if I need to store 0 with two bits I ne

相关标签:
8条回答
  • 2020-12-30 13:54

    Try this:

    String binaryString = String.format("%"+Integer.toString(size)+"s",Integer.toBinaryString(19)).replace(" ","0");
    

    where size can be any number the user wants

    0 讨论(0)
  • 2020-12-30 14:02

    Here's a simple solution for int values; it should be obvious how to extend it to e.g. byte, etc.

    public static String bitString(int i, int len) {
        len = Math.min(32, Math.max(len, 1));
        char[] cs = new char[len];
        for (int j = len - 1, b = 1; 0 <= j; --j, b <<= 1) {
            cs[j] = ((i & b) == 0) ? '0' : '1';
        }
        return new String(cs);
    }
    

    Here is the output from a set of sample test cases:

      0   1                                0                                0
      0  -1                                0                                0
      0  40 00000000000000000000000000000000 00000000000000000000000000000000
     13   1                                1                                1
     13   2                               01                               01
     13   3                              101                              101
     13   4                             1101                             1101
     13   5                            01101                            01101
    -13   1                                1                                1
    -13   2                               11                               11
    -13   3                              011                              011
    -13   4                             0011                             0011
    -13   5                            10011                            10011
    -13  -1                                1                                1
    -13  40 11111111111111111111111111110011 11111111111111111111111111110011
    

    Of course, you're on your own to make the length parameter adequate to represent the entire value.

    0 讨论(0)
提交回复
热议问题