【发布时间】:2012-01-16 19:59:28
【问题描述】:
字母表中有 26 个字符 (abc..yz) 和 10 个数字 (0..9)。如果我们区分大小写,这为我们提供了 62 个字符的词典。
目前,我们正在根据数据库中的 ID 构建文件名的一部分。这些数字可能会变得很长,因此我们想缩短它们。例如,而不是:
file_459123.exe
我们宁愿:
file_aB5.exe
有没有人在 C# 中有一种方法可以将 int 转换为更短的区分大小写的字符串,并将区分大小写的字符串转换回 int?
示例(不一定是这种模式):
1 = 1
2 = 2
...
9 = 9
10 = a
11 = b
...
36 = z
37 = A
【问题讨论】:
-
将 int 转换为字节;从大端删除零;通过base-64运行它...反向:通过base-64运行它;在大端用零填充;将字节转换为 int
-
这适用于 Windows 吗? (几乎可以肯定,因为这个标记为 c#,asp.net)。如果是这样,请注意文件系统不区分大小写。这样做时,您实际上只有大写或小写字母,而不是两者。
-
旁白:如果我不得不在 Windows 上管理大量文件,我会遇到大型目录的性能问题。我的解决方案是分解文件的标识号并将这些部分用于目录路径,例如Invoice_012345.pdf 将是 C:\HeapOStuff\01\23\ 中的一个文件。将目录限制为 100 个文件非常适合我的应用程序。
-
我认为
ToString("x")就足够了,因为使用 Base64(考虑到一个 int)你不会得到 much 更短的字符串,这些是 65535//8=ffff或对于 MaxInt////fw==7fffffff
标签: c# asp.net string encoding