我有一个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数组转换为字符会更好吗?
答案 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。
这两者的结合可以引导您找到理想的解决方案。