小编典典

将Guid表示为一组整数

algorithm

如果我想将GUID表示为一组整数,该如何处理转换?我正在考虑获取GUID的字节数组表示并将其分解为尽可能少的32位整数,这些整数可以转换回原始GUID。首选代码示例…

另外,结果整数数组的长度是多少?


阅读 278

收藏
2020-07-28

共1个答案

小编典典

通过这种方式,我以某种方式获得了更多的乐趣:

byte[] bytes = guid.ToByteArray();
int[] ints = new int[bytes.Length / sizeof(int)];
for (int i = 0; i < bytes.Length; i++) {
    ints[i / sizeof(int)] = ints[i / sizeof(int)] | (bytes[i] << 8 * ((sizeof(int) - 1) - (i % sizeof(int))));
}

然后转换回去:

byte[] bytesAgain = new byte[ints.Length * sizeof(int)];
for (int i = 0; i < bytes.Length; i++) {
    bytesAgain[i] = (byte)((ints[i / sizeof(int)] & (byte.MaxValue << 8 * ((sizeof(int) - 1) - (i % sizeof(int))))) >> 8 * ((sizeof(int) - 1) - (i % sizeof(int))));
}
Guid guid2 = new Guid(bytesAgain);
2020-07-28