Нужно переписать данный код с 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);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь загрузить файл в папку на внутреннем накопителе по пути /storage/sdcard0/novsu/db/ но выдает сообщение /storage/sdcard0/
Как сделать так чтобы снаряд, который вылетел из ствола пушки, пролетел несколько метров и упал на землю
Я уже думал, может беда в том, что это Mac OSX? Просто шаблоны (которые шли вместе с архетипом) запускает без проблем, а мои скрипты такого же формата...
Всем добрый вечер! Кто нибудь может помочь, с такой задачкой