Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将2个GUI转换为最大长度为50个字符的字符串(双向转换)_C#_.net_Guid_Base36 - Fatal编程技术网

C# 如何将2个GUI转换为最大长度为50个字符的字符串(双向转换)

C# 如何将2个GUI转换为最大长度为50个字符的字符串(双向转换),c#,.net,guid,base36,C#,.net,Guid,Base36,有一个有趣的问题-我需要将2个(随机)生成的guid转换为字符串。以下是限制条件: 字符串最大长度为50个字符 只能使用数字和小写字母(0123456789abcdefghijklmnopqrstuvwxyz) 算法必须是双向的-需要能够将编码字符串解码为相同的2个单独的GUID 我已经浏览了很多网站,寻找toBase36转换bo,但到目前为止,Guid还没找到 有什么想法吗?(C#)首先,您很幸运,36^50大约是2^258.5,因此您可以将信息存储在一个50字节的base-36字符串中。我想

有一个有趣的问题-我需要将2个(随机)生成的guid转换为字符串。以下是限制条件:

  • 字符串最大长度为50个字符
  • 只能使用数字和小写字母(0123456789abcdefghijklmnopqrstuvwxyz)
  • 算法必须是双向的-需要能够将编码字符串解码为相同的2个单独的GUID
  • 我已经浏览了很多网站,寻找toBase36转换bo,但到目前为止,Guid还没找到


    有什么想法吗?(C#)

    首先,您很幸运,36^50大约是2^258.5,因此您可以将信息存储在一个50字节的base-36字符串中。我想知道,为什么有人要用base-36来做这个

    您需要将每个GUID视为一个128位的数字,然后将它们组合成一个256位的数字,然后将其转换为base-36“数字”。转换回正相反地执行相同的操作

    Guid.ToByteArray
    将Guid转换为16字节数组。对两种guid都这样做,您就有了一个32字节(256位)的数组。从该数组构造一个
    BigInt
    (有一个构造函数),然后将该数字转换为base-36

    要将一个数字转换为基数36,请执行以下操作(我假设所有操作都是正数)


    谢谢你!如何将BigInt转换为base-36?这就是我正在努力解决的问题……我不明白这是怎么回事。结果为空。因此,在循环中,每次都在空值上运行一个模。这意味着您的结果将为空。您发现了一个输入错误。应该是数字%36。找到了解决方案
    const string digits = "0123456789abcdefghijklmnopqrstuvwxyz";
    
    string ConvertToBase36(BigInt number)
    {
        string result = "";
        while(number > 0)
        {
            char digit = string[number % 36];
            result += digit;
            number /= 36;
        }
    }