我希望生成一个唯一的随机散列,它被复制的可能性很小。它应该只包含数字,我希望它有 4 个字符长。我有以下形式的文件路径
filepath = "c:\\users\\john\\filename.csv"
Run Code Online (Sandbox Code Playgroud)
现在,我只想选择该字符串的“文件名”部分并从该文件名创建一个散列,尽管我希望它每次都不同,所以如果两个用户上传一个类似命名的文件,它可能会生成一个不同的散列代码。这样做的最佳方法是什么?
我将使用此散列附加“001”、“002”等以创建学生 ID。
然而...
它应该只包含数字,我希望它有 4 个字符长。
只有 4 个数字字符,您将可以保证与 1000 个不同的文件发生冲突,并且可能会更快地被击中。这使得不可能有“被复制的微乎其微的机会”。
编辑回应评论:
你可以做一些简单的散列类型,尽管这会产生很多冲突:
string ComputeFourDigitStringHash(string filepath)
{
string filename = System.IO.Path.GetFileNameWithoutExtension(filepath);
int hash = filename.GetHashCode() % 10000;
return hash.ToString("0000");
}
Run Code Online (Sandbox Code Playgroud)
这将从字符串的文件名部分为您提供 4 位“哈希”。请注意,它会有很多碰撞,但它会给你一些你可以使用的东西。
| 归档时间: |
|
| 查看次数: |
8375 次 |
| 最近记录: |