从Guids列表生成确定性Guid

时间:2015-07-03 14:12:19

标签: c# hash guid

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

此外,它应该具有最低的冲突,因此输入处的不同guid会在输出处生成不同的guid。

有人可以帮我吗?什么应该是最好的方式去这里?它基本上是一个哈希函数,但超过了Guids。

1 个答案:

答案 0 :(得分:1)

你可以对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);