Прежде всего, вам повезло, 36 ^ 50 составляет около 2 ^ 258,5, поэтому вы можете хранить информацию в 50-байтовой строке base-36.Интересно, однако, почему кто-то должен использовать base-36 для этого.
Вам нужно обрабатывать каждый GUID как 128-битное число, а затем объединить их в 256-битное число, которое вы затемпреобразовать в «число» базы-36.Обратное преобразование делает то же самое в обратном порядке.
Guid.ToByteArray
преобразует GUID в 16-байтовый массив.Сделайте это для обоих идентификаторов GUID, и вы получите массив из 32 байтов (что составляет 256 бит).Построить BigInt
из этого массива (есть конструктор), а затем просто преобразовать это число в base-36.
Чтобы преобразовать число в base-36, сделайте что-то вроде этого (я предполагаю, что все положительно)
const string digits = "0123456789abcdefghijklmnopqrstuvwxyz";
string ConvertToBase36(BigInt number)
{
string result = "";
while(number > 0)
{
char digit = string[number % 36];
result += digit;
number /= 36;
}
}