我想从其他Guids列表中生成一个Guid。生成的Guid必须具有以下属性:对于相同的guid输入列表,无论我应用转换多少次,生成的Guid都是相同的。
此外,它应该具有最低的冲突,因此输入处的不同guid会在输出处生成不同的guid。
有人可以帮我吗?什么应该是最好的方式去这里?它基本上是一个哈希函数,但超过了Guids。
答案 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);