JAVA int到bytes数组的数组

时间:2017-04-01 19:09:32

标签: java arrays byte

我有一个int数组int[] stegoBitsArray = {0,1,1,0,1,1,0,0,0,1,1,0,0,0,0,1...}我希望每个 8 位转换为 byte 并添加到字节数组中,我稍后将转换为char数组,因为01101100是字母“l”等等所以...所以我尝试使用 ByteBuffer ,但它引发了我 BufferOverflowException 这里是我的代码片段:

 int[] stegoBitsArray = getStegoTextFromImage(stegoImage);
 ByteBuffer byteBuffer = ByteBuffer.allocate(stegoBitsArray.length);
 for (int i = 0; i < stegoBitsArray.length; i++) {
    byteBuffer.putInt(stegoBitsArray[i]);
 }

或者从int数组转换为字符会更好吗?

2 个答案:

答案 0 :(得分:1)

要从二进制转换为char,您必须将每个8位二进制转换为字节,然后您可以从byte转换为char。例如:

def Change(_text):
    L = len(_text)
    _i = 2
    _text[_i] = "*"
    _i += 2
    print(_text)

打印

byte b = Byte.parseByte("01100001", 2);
        System.out.println((char)b);

答案 1 :(得分:0)

为什么在整数数组中可以得到像0110110001100001这样的值。要么它可以存储为字符串,要么存在其他方式。

你可以有一个整数值数组,如int array = {123,456,333}等,然后你可以通过循环数组直接将这些整数转换为字符。

for(int i = 0; i < array.length; i++){
   char c = (char)array[i];  
   System.out.println(c);
}

或者如果要将整数转换为二进制,那么Java在Integer类中支持一个名为toBinaryString的方法。你可以找到一个很好的资源HERE

这两者的结合可以引导您找到理想的解决方案。