Macros for conversion of 128bit to 16bit UUID
时间: 2024-11-27 07:18:07 浏览: 52
在计算机系统中,UUID(Universally Unique Identifier,通用唯一标识符)通常用于生成全局唯一的标识。对于128位UUID转换成16位UUID的情况,这种操作通常是出于存储效率或传输便利性的考虑。在许多编程语言中,包括C#、Java等,会提供宏或者库函数来简化这个过程。
例如,在C#中,可以使用`BitConverter.GetBytes()`方法配合一些位运算来完成128位到16位的转换。128位UUID分为时间戳、节点部分(48位)、序列号(16位),其中只有最后两个部分组成16进制的16位UUID。这里是一个简化的示例:
```csharp
// 假设有个128位的Guid值
Guid guid128Bit;
// 转换为Bytes数组,前两块是时间戳,后两块是节点+序列号
byte[] bytes = guid128Bit.ToByteArray();
// 提取最后16位作为16进制字符串
string hex16Bit = BitConverter.ToString(bytes.Skip(8).Take(2)).Replace("-", "").ToLower();
```
类似地,在Java中,也可以通过`long`类型的拆分来处理:
```java
long uuidLong = ...; // 获取128位的long表示的UUID
int[] uuid16Bit = new int[2];
uuid16Bit[0] = (int) (uuidLong >>> 48); // 取低16位
uuid16Bit[1] = (int) uuidLong & 0xFFFF; // 取剩余16位
String uuid16Hex = Long.toHexString(uuid16Bit[0]) + Long.toHexString(uuid16Bit[1]).substring(2);
```
阅读全文
相关推荐

















