如何将二进制字符串转换为java中2字节的字节数组

前端之家收集整理的这篇文章主要介绍了如何将二进制字符串转换为java中2字节的字节数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有二进制字符串String A =“1000000110101110”.我想在 java中将此字符串转换为长度为2的字节数组

我已经采取了this链接的帮助

我试图通过各种方式将其转换为字节

>我先将该字符串转换为十进制,然后将代码应用于存储到字节数组中

int aInt = Integer.parseInt(A,2);
        byte[] xByte = new byte[2];
    xByte[0] = (byte) ((aInt >> 8) & 0XFF);
    xByte[1] = (byte) (aInt & 0XFF);
    System.arraycopy(xByte,record,xByte.length);

但是存储到字节数组中的值是负数

xByte[0] :-127
xByte[1] :-82

哪个是错误的值.

我也试过用

byte[] xByte = ByteBuffer.allocate(2).order(ByteOrder.BIG_ENDIAN).putInt(aInt).array();

但它会在上面的行中引发异常

java.nio.Buffer.nextPutIndex(Buffer.java:519)     at
  java.nio.HeapByteBuffer.putInt(HeapByteBuffer.java:366)   at
  org.com.app.convert.generateTemplate(convert.java:266)

我现在该怎么做才能将二进制字符串转换为2字节的字节数组?在java中是否有任何内置函数获取字节数组

解决方法

你得到的答案
xByte[0] :-127
 xByte[1] :-82

是正确的.

这被称为2的赞美Represantation.
第1位用作有符号位.

0 for +ve
1 for -ve

如果第1位为0,则计算为常规位.
但如果第1位为1,则从128中扣除7位的值,并以-ve形式呈现答案.

在你的情况下
第一个值是10000001
所以1(第1位)用于-ve和128-1(最后7位)= 127
所以价值是-127

有关详细信息,请参阅2的补码表示.

原文链接:https://www.f2er.com/java/120863.html

猜你在找的Java相关文章