Исходя из вашего комментария, вы пытаетесь внести изменения в Цезарь-шифр , и в этом случае вы должны использовать оператор модуля (%
), а не оператор целочисленного деления (/
) , Использование целочисленного деления приводит к потере информации, которая не позволит вам расшифровать. Когда ваша цифра находится в {0, 1, 2}, ваше деление приводит к 0. Когда это в {3, 4, 5, 6, 7, 8, 9}, деление приводит к 1. Вы не можете расшифруйте {0, 1} обратно на исходный номер без какой-либо дополнительной информации (которую вы отбросили).
Если вы хотите шифровать поразрядно с использованием подхода Цезаря Шифра, вы должны использовать по модулю арифметики , чтобы каждая цифра имела уникальное зашифрованное значение, которое можно получить во время дешифрования. Если это действительно то, что вы ищете, то вы должны сделать что-то вроде следующего, чтобы зашифровать с помощью 7:
a = (a + 7) % 10;
b = (b + 7) % 10;
c = (c + 7) % 10;
d = (d + 7) % 10;
Чтобы расшифровать, вычтите 7, которое в арифметике мода 10 является сложением на 3, так что это будет:
a = (a + 3) % 10;
b = (b + 3) % 10;
c = (c + 3) % 10;
d = (d + 3) % 10;
Это, конечно, предполагает, что вы правильно проверили свои данные (что не так в вашем примере выше).