如果我想将GUID表示为一组整数,该如何处理转换?我正在考虑获取GUID的字节数组表示并将其分解为尽可能少的32位整数,这些整数可以转换回原始GUID。首选代码示例…
另外,结果整数数组的长度是多少?
通过这种方式,我以某种方式获得了更多的乐趣:
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);