c# - 从指南列表生成确定性指南

标签 c# hash guid

我想从其他 Guid 列表中生成一个 Guid。生成的 Guid 必须具有这样的属性:对于相同的 guid 输入列表,无论我应用转换多少次,生成的 Guid 都将是相同的。

此外,它应该具有尽可能低的冲突,以便输入处的不同 guid 会在输出处生成不同的 guid。

有人可以帮我解决这个问题吗?去这里最好的方式是什么?它基本上是一个哈希函数,但基于 Guid。

最佳答案

您可以对 Guid 的各个字节进行一些算术 - 下面的代码基本上将它们相加(由于溢出而模 256):

byte[] totalBytes = new byte[16];
foreach (var guid in guids) {
    var bytes = guid.ToByteArray();
    for (int i = 0; i < 16; i++) {
        totalBytes[i] += bytes[i];
    }
}
var totalGuid = new Guid(totalBytes);

关于c# - 从指南列表生成确定性指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31208865/

相关文章:

c# - 为什么在非 MonoBehaviour 类中调用多个构造函数?

javascript - 哈希分布,为什么 0 总是重权重?

hash - 具有不同结果的 MD5 哈希

.net - GUID 在可预测性方面的安全性如何?

asp.net - 考虑到可扩展性和友好 URL 的 GUID 替代方案

c# - 'AnyCPU' 平台目标上的内存分配模式

c# - SQLite 内存数据库急切加载实体

c# - Guid.NewGuid() 返回重复项?

c# - Oracle 架构名称

c++ - 最大值(value)股票,实现细节