Как изменить число на другое число такой же длины
Суть такая: мне приходит json, в нем приходит полностью числовой номер договора Нужно его так замаскировать, чтобы при прогоне одинаковой строки через метод получалась одинаковая итоговая строка той же длины что было число изначально
Я пыталась получить хэш, а потом его помножить на что-нибудь, но так может получится, что итоговое число может быть короче чем была стринга изначально и возникнет ошибка
Какие варианты есть чтобы так замаскировать число?
Ответы (2 шт):
ничего не понятно. Вы не можете сгенерировать случайное число определенной длины?
Вариант 1: прибавьте/отнимите от исходного числа 1 или любое другое число.
Вариант 2: умножьте исходное число на любое число, переведите в строку, возьмите срез нужной длины и переведите опять в число.
Вариант 3: просто сгенерируйте нужно число из диапазона чисел нужной длины (rand.randint(start, end))
Вариант 4: запишите исходное число наоборот.
Еще примерно десять других вариантов....
Возможен вариант с заменой одних цифр на другие по одной и той же схеме, т.е. если на входе одно и то же число, то на выходе получится также одно и то же число, но отличное от входного. Ноль заменяется только на ноль, чтобы не получить после преобразования ведущий ноль, который изменит длину числа.
public class Main {
static int change_num(int n) {
String s = Integer.toString(n);
String from = "0123456789";
String to = "0954782136";
String out = "";
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int idx = from.indexOf(c);
out += to.charAt(idx);
}
return Integer.parseInt(out);
}
public static void main(String[] args) {
for (int n : (new int[]{123456, 45789320, 544514254})) {
System.out.println(n + " -> " + change_num(n));
}
}
}
123456 -> 954782
45789320 -> 78136450
544514254 -> 877897587