2016-02-12 158 views
0

我知道這可能是一個簡單的問題,但我真的無法解決這個問題! 我想要的是將數組轉換爲字符 我的意思是,讓我們假設someArray已經進入{1,0,1,0,1,0},並且以二進制形式,10101010 =ª 現在,我怎麼能去做?有沒有像arrayToChar(字節)或類似的東西? 我的想法是讓一類具有像如何將二進制轉換爲字符或字符串?,Java

if(someArray.equals(10101010)){ 
return "ª"; 
} 

所有轉換,但我知道必須有一個更簡單的短辦法做到這一點,任何想法? :(請幫助

+1

什麼是'someArray'的類型? –

+0

someArray是整數,它應該是字節[],但我只是不知道如何使用那種類型 – tasipa

回答

0

a正確的二進制文件是1100001。你可以用的東西做(在Java中8+)像

int[] arr = { 1, 1, 0, 0, 0, 0, 1 }; 
StringBuilder sb = new StringBuilder(); 
IntStream.of(arr).forEach(x -> sb.append(x)); 
char ch = (char) Integer.parseInt(sb.toString(), 2); 
System.out.println(ch); 

沒有轉換爲String(和早期Java的版本),如

int v = 0; 
for (int i = 0; i < arr.length; i++) { 
    v += arr[arr.length - i - 1] * Math.pow(2, i); 
} 
System.out.println((char) v); 

兩個輸出(如需要)

a 
+0

非常感謝! :)如何將反向算法? (a - > 1100001) 我必須改變4行嗎? – tasipa

+0

@tasipa'Integer.toBinaryString(int)'應該這樣做。 –

0

試試這個

int[] myArray = {1, 0, 1, 0, 1, 0}; 
    int i = IntStream.of(myArray).reduce(0, (a, b) -> a * 2 + b); 
    String s = Character.toString((char)i); 
    System.out.println(Arrays.toString(myArray) + " -> " + s); 
    // [1, 0, 1, 0, 1, 0] -> * 
相關問題