我得到一个可能很大的数字 (UInt.MaxValue: 18446744073709551615) 作为一个正常的 base10 数字。这个数字最终会变成一个文件名:12345678945768.txt
由于 Windows 上的文件名不仅限于数字,我想将其“压缩”为较短的字符串,但需要确保字符串可以映射回数字。
对于较小的数字:0001365555,十六进制比其他任何数字都短得多。到目前为止,我发现的所有内容都表明 Base64 最短,但事实并非如此。
到目前为止,我已经尝试过:
//18446744073709551615 - 20
UInt64 i = UInt64.MaxValue; // 0001365555
//"//////////8=" - 12
string encoded = Convert.ToBase64String(BitConverter.GetBytes(i));
//"FFFFFFFFFFFFFFFF" - 16
string hexed = i.ToString("X");
//"MTg0NDY3NDQwNzM3MDk1NTE2MTU=" - 28
string utf = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(i.ToString()));
有没有更好的方法来“压缩”整数以转换类似于十六进制但使用 00-zz 而不仅仅是 00-FF?
提前致谢!