2017-02-01 21 views
-1

У меня есть хэш-карта, которая содержит следующие отображения ....Как отобразить, расшифрован двоичный код для отображения в HashMap

HashMap <String , Integer>hm = new HashMap <String , Integer>(); 
    hm.put("e", 0); 
    hm.put("h",1); 
    hm.put("i", 2); 
    hm.put("k",3); 
    hm.put("l",4); 
    hm.put("r",5); 
    hm.put("s",6); 
    hm.put("t",7); 

Наряду с этим у меня есть двоичная последовательность, которая я получил от другого вычисление как

1 0 10 100 1 10 111 100 0 101 

Моя цель - получить результирующие символы, отображаемые этими двоичными цифрами на карте хеша выше.

For example .... 001 = 1 = h 
       000 = 0 = e 
       010 = 2 = i 

Этот код является частью программы, которая реализует одноразовый блок в криптографии. Я выполнил шифрование, а также расшифровку.

см 3 ответа здесь для доказательства код:

storing charcter and binary number in a hash map

Но я изо всех сил, чтобы отобразить расшифрованный бинарный выход кода, чтобы буквы в моей хэш-карте.

Заранее спасибо

+0

ли все значения в 'hm' карту уникальным? – flakes

+0

есть. все они уникальны. –

+0

Когда вы имеете в виду «дисплей», вы имеете в виду, когда вы выводите хэш-карту, вы хотите распечатать серию бинарных файлов? –

ответ

0

Вы должны карту от значения к ключу (который является обратной дороге через HashMap работы). Постройте дешифрование Map.

Map<Integer, String> dec = new HashMap<>(); 
for (Map.Entry<String, Integer> kp : hm.entrySet()) { 
    dec.put(kp.getValue(), kp.getKey()); 
} 

Тогда можно перебирать, что, анализируя ваши входные значения int и получить соответствующее значение. Как

String input = "1 0 10 100 1 10 111 100 0 101"; 
Stream.of(input.split("\\s+")).map(s -> dec.get(Integer.parseInt(s, 2))) 
     .forEachOrdered(s -> System.out.print(s + " ")); 
System.out.println(); 
+0

требуется преобразовать двоичную последовательность в строку? можно ли это сделать без преобразования? –

0

Создайте новую карту со значениями, а строки поменялись местами.

final Map<String, Integer> hm = ... 
final Map<Integer, String> mapping = hm.entrySet().stream() 
    .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey)); 

Теперь вы можете использовать эту карту, чтобы сделать ваш поиск:

final List<Byte> bytes = ... 
final List<String> keys = bytes.stream() 
    .map(mapping::get) 
    .collect(Collectors.toList()); 

 Смежные вопросы

  • Нет связанных вопросов^_^