В настоящее время я работаю над программой шифрования Vernam, и большая часть этого заключается в возможности преобразования открытого текста в двоичный файл. Я изучил, как это сделать, и обнаружил, что Integer.toBinaryString()
будет лучше всего работать при преобразовании каждого отдельного символа открытого текста в двоичный. Для большинства символов это преобразование работает, однако я обнаружил случаи, когда я сталкиваюсь с ошибкой в преобразовании.
Например, всякий раз, когда я запускаю этот код: System.out.println(Integer.toBinaryString('€'));
я ожидаю вывод 10000000
, однако, вместо этого выводится 10000010101100
. В соответствии с этой таблицей ASCII , я знаю, что расширенные символы ASCII могут иметь некоторые различия в значениях, однако большинство символов в этой таблице являются точными в расширенном разделе символов ASCII, евро представлен 128 в ASCII ,
Почему Integer.toBinaryString('€')
возвращает 10000010101100
? Есть ли способ, которым я могу это исправить?