Нужно переписать данный код с JS:
function deobfuscate(string) {
var arr = string.split('.');
var result = '';
for (index = 0; index < arr.length; ++index) {
if (arr[index]) {
result += String.fromCharCode(Math.sqrt(arr[index]));
}
}
return result;
}
На Java. Что я уже сделал:
private String deobfuscate(String obfuscate) {
String[] numbers = obfuscate.split("\\.");
String result = "";
for(String number : numbers) {
int num = Integer.parseInt(number);
int sqrtnum = Math.sqrt(num);
String schar = ???;
result += schar;
}
return result;
}
Что писать вместо ???? Я так понял, в JS коде число переводится в Unicode символ, но как это сделать в Java?
Метод Math.sqrt возвращает double, так что должно быть:
double sqrtnum = Math.sqrt(num);
Получить символ из его кода можно простым приведением типа:
char c = (char)sqrtnum;
С учетом использования StringBuilder вместо конкатенации строк получается так:
private String deobfuscate(String obfuscate)
{
String[] numbers = obfuscate.split("\\.");
StringBuilder result = new StringBuilder(numbers.length);
for (String number : numbers)
{
int num = Integer.parseInt(number);
double sqrtnum = Math.sqrt(num);
char c = (char)sqrtnum;
result.append(c);
}
return result.toString();
}
Перевод ответа BalusC
У класса String есть конструктор принимающий int[] (добавлено с Java 1.5):
public static String fromCharCode(int... codePoints) {
return new String(codePoints, 0, codePoints.length);
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости