Делаю программу шифрования, не серьезную, так, чтобы себя развлечь. И столкнулся с этой проблемой: нужно как-то перевести строку в одно большое число в двоичной СИ. Прошу вас помочь мне=)
Asked
Active
Viewed 66 times
0
-
В смысле в двоичной? Вам нужно получить коды каждого символа, перевести их в 2сс и соединить в одну длинную строку из 0 и 1? – Кирилл Малышев Mar 31 '17 at 18:37
-
Приведите небольшой пример - так было, а так стало. – 0xdb Mar 31 '17 at 18:54
-
http://ru.stackoverflow.com/q/453059/10105 – VladD Mar 31 '17 at 23:02
-
@0xdb, ему надо рассматривать входную строку (или блок) как одно N-байтное беззнаковое число. – Arhadthedev Apr 05 '17 at 05:41
2 Answers
0
Вот небольшой пример, который решает ваш вопрос.
public static void main(String[] args) throws UnsupportedEncodingException {
String string = "Hello";//Исходная строка
System.out.println(string);//Выводим строку
byte[] arr =string.getBytes("UTF-8");//Преобразовываем строку в массив byte
System.out.println(bytesToBin(arr));//Выводи массив byte в двоичном виде
string = new String(arr, "UTF-8");//Получаем обратно строку из массива byte
System.out.println(string);//Выводим полученную строку
}
/*
* Переводим byte в строку с двоичным видом
*/
public static String byteToBin(byte b){
return String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0');
}
/*
* Переводим массив byte в строку с двоичным видом
*/
public static String bytesToBin(byte[] bytes){
StringBuilder stringBuilder = new StringBuilder();
for(byte b:bytes){
stringBuilder.append(byteToBin(b)).append(" ");
}
return stringBuilder.toString();
}
Leonid
- 777
-
Спасибо за совет, мне это довольно сильно помогло, да и вообще прибавило знаний. Но у меня возникает ошибка в коде [https://github.com/DarkLadder/Encryption/blob/master/src/Window.java ](at Window$Action.actionPerformed(Window.java:54)) – Дмитрий Apr 01 '17 at 09:13
-
-
Да, не заметил. У вас java.lang.ArrayIndexOutOfBoundsException. Длина массива k 3, а вы пытаетесь обратиться к большему индексу. – Leonid Apr 01 '17 at 12:10
-
0
самое простое - Biginteger bigint = new Biginteger("string".toBytes());
и обратно - String str = new String(bigint.getByteArray());
Никита Гордеев
- 341