将二进制字符串转换为字节数组

Rya*_*man 6 java string syntax binary byte

我有一串1和0,我想转换为字节数组.

例如,String b = "0110100001101001"如何将其转换byte[]为长度为2的?

Jef*_*ter 21

将其解析为基数为2的整数,然后转换为字节数组.事实上,既然你已经有了16位,就可以打破很少使用的了short.

short a = Short.parseShort(b, 2);
ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a);

byte[] array = bytes.array();
Run Code Online (Sandbox Code Playgroud)

  • 如果String包含太多位,即使在`long`变量中也无法保存,该怎么办? (3认同)
  • 我不确定这会变得简单吗?如果`b`的格式无效,则抛出`NumberFormatException`并由被调用者来处理错误.对于如何改进这一点持开放态度,但我认为这足以说明问题的答案. (3认同)

Shr*_*ari 17

另一个简单的方法是:

String b = "0110100001101001";
byte[] bval = new BigInteger(b, 2).toByteArray();
Run Code Online (Sandbox Code Playgroud)

  • 它无法解析“1110100001101001” (2认同)
  • 请参阅http://stackoverflow.com/questions/24158629/biginteger-tobytearray-returns-purposeful-leading-zeros您可能有一些符号问题。 (2认同)
  • @Line因为你显示错了.请参阅[打印Java阵列的最简单方法是什么?](/sf/ask/28684911/) (2认同)