Начиная с этого:
int[] replace_Ones = { 2, 3, 9, 7 }; // I removed the 0 ;)
long ServerEncryption = 1101010000111001;
Вы можете создать метод, который выполняет следующие действия:
long FunnyEncrypt( long pseudobinary )
{
long result = 0;
long scope = 1;
while( pseudobinary > 0 )
{
// place 2 or 3 or 7 or 9 0 or 1
result += scope * GetRandomReplacement() * ( pseudobinary % 10 );
scope *= 10;
pseudobinary = pseudobinary / 10; // decimal right shift 110 / 10 -> 11
}
return result;
}
Отказ от ответственности: не проверено! Поправки приветствуются.
GetRandomReplacement
оставлено для практики: D - но в основном это «выбрать случайное целое число из [0..3] и использовать его в качестве индекса в массиве [2,3, 7,9] ".
Пример:
example input: 1101
| iteration | input | result | scope | -> | input | result | scope | GetRandomRepl |
| 1 | 1101 | 0 | 1 | -> | 110 | 7 | 10 | 7 |
| 2 | 110 | 7 | 10 | -> | 11 | 7 | 100 | - |
| 3 | 11 | 7 | 100 | -> | 1 | 307 | 1000 | 3 |
| 4 | 1 | 307 | 1000 | -> | 0 | 2307 | 10000 | 2 |
=> Result = 2307
РЕДАКТИРОВАТЬ: изменилось на long
после тестирования, не видел, что число слишком большое для int: https://dotnetfiddle.net/5X4lZu