2016-02-12 6 views
0

Я знаю, что это может быть простой вопрос, но на самом деле я просто не могу решить эту проблему! Я хочу преобразовать массив в char Я имею в виду, предположим, что someArray имеет в нем {1,0,1,0,1,0}, а в двоичном коде 10101010 = ª сейчас, как я могу сделай это? есть что-то вроде arrayToChar (байт) или что-то в этом роде? моя идея состоит в том, чтобы сделать класс со всеми превращениями, какКак преобразовать двоичный код в char или String?, 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] -> * 
Смежные вопросы