2017-04-01 99 views
-2

我有一個int數組int[] stegoBitsArray = {0,1,1,0,1,1,0,0,0,1,1,0,0,0,0,1...}我希望每個比特轉換爲字節並添加到字節數組我以後將轉換爲字符數組,因爲01101100是字母「l」等就這麼...所以我試圖用的ByteBuffer但它拋出我BufferOverflowException這裏是我的代碼片段:JAVA陣列的字節陣列

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

,或者它更多更好地從int數組轉換爲字符?

+2

是'0110110001100001'一個**十進制數**僅包含0/1的數字,或者是一個**的二進制數**你寫的二進制? –

+0

它是一個包含值0或1的數組 –

+0

如果要將8個「0」或「1」的int值轉換爲「byte」,則必須使用位操作(例如,使用'<<'和'|'運算符。沒有庫方法可以爲你做,*你*必須編寫代碼來完成它。 --- *意見:* getStegoTextFromImage()是一種什麼樣的白癡方法,將* bits *作爲int []'返回? * Yikes!* – Andreas

回答

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

這兩個組合可以引導你到你想要的解決方案。

1

要將二進制轉換爲字符,必須將每個8位二進制轉換爲字節,然後才能將字節轉換爲字符。例如:

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

打印

a