GUID 类型
2016-02-24 15:22
399 查看
GUID 类型
GUIDglobally
unique identifier(全球唯一标识符)
它通过一种复杂的算法生成,保证世界上任何两台计算机都不会生成重复的 GUID 值。
GUID主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
在 Windows 平台上,GUID应用非常广泛,比如:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。
GUID 类型定义:
#if defined(__midl)
typedef struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
byte Data4[ 8 ];
} GUID;
#else
typedef struct _GUID{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
#endif
示例:
GUID43ad2ba0_2471_4610_86ac_5e8e8836cc87 = { 1135422368u, 9329u, 17936u, { 134u,172u, 94u, 142u, 136u, 54u, 204u, 135u } };
从 GUID 类型的定义上看,分成四个部分,但是,从具体的示例看,用四个线进行分隔好像应该是五个部分。那么,到底是怎么加速呢?
毫无疑问,类型定义肯定是准确的。那么就要看看它们到底是如何对应的?
看示例,等号前面,是我们可以看到的表现形式,用四个下划线分隔,有五个部分,每一部分都是 16 进制数;等号后面是真正存储的数据,以逗号分隔,是四个部分,第四部分又由 8 个部分组成,每一部分都是无符号的10 进制数。
计算一下,就可以知道:
16 进制 43ad2ba0 是等于 10 进制 1135422368u,同理,后面两个也是如此。
第四和第五部分合在一起,看作一个部分,是 16 位 16 进制数,其中,每两位一组,构成一个无符号的整数。
在 System.Guid 命名空间下有一个 NewGuid() 函数,可以生成 GUID 值。
比如,在 PowerShell 下输入:
[System.guid]::NewGuid()
就得到一个 GUID 值:
Guid
----
43ad2ba0_2471_4610_86ac_5e8e8836cc87
GUIDglobally
unique identifier(全球唯一标识符)
它通过一种复杂的算法生成,保证世界上任何两台计算机都不会生成重复的 GUID 值。
GUID主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
在 Windows 平台上,GUID应用非常广泛,比如:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。
GUID 类型定义:
#if defined(__midl)
typedef struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
byte Data4[ 8 ];
} GUID;
#else
typedef struct _GUID{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
#endif
示例:
GUID43ad2ba0_2471_4610_86ac_5e8e8836cc87 = { 1135422368u, 9329u, 17936u, { 134u,172u, 94u, 142u, 136u, 54u, 204u, 135u } };
从 GUID 类型的定义上看,分成四个部分,但是,从具体的示例看,用四个线进行分隔好像应该是五个部分。那么,到底是怎么加速呢?
毫无疑问,类型定义肯定是准确的。那么就要看看它们到底是如何对应的?
看示例,等号前面,是我们可以看到的表现形式,用四个下划线分隔,有五个部分,每一部分都是 16 进制数;等号后面是真正存储的数据,以逗号分隔,是四个部分,第四部分又由 8 个部分组成,每一部分都是无符号的10 进制数。
计算一下,就可以知道:
16 进制 43ad2ba0 是等于 10 进制 1135422368u,同理,后面两个也是如此。
第四和第五部分合在一起,看作一个部分,是 16 位 16 进制数,其中,每两位一组,构成一个无符号的整数。
16 进制数 | 10 进制数 | |
1 | 43ad2ba0 | 1135422368u |
2 | 2471 | 9329u |
3 | 4610 | 17936u |
4.1 | 86 | 134u |
4.2 | ac | 172u |
4.3 | 5e | 94u |
4.4 | 8e | 142u |
4.5 | 88 | 136u |
4.6 | 36 | 54u |
4.7 | Cc | 204u |
4.8 | 87 | 135u |
比如,在 PowerShell 下输入:
[System.guid]::NewGuid()
就得到一个 GUID 值:
Guid
----
43ad2ba0_2471_4610_86ac_5e8e8836cc87
相关文章推荐
- sdut 2428 Ubiquitous Religions(最小生成树)
- UIActivityViewController 系统社交化 共享
- dom4j解析xml报错:Nested exception: org.xml.sax.SAXParseException: White space is required between the processing instruction target and data.
- 使用easyui实现双击列表中某个值直接对其进行修改
- UIDynamic
- *** Assertion failure in -[UICollectionViewData validateLayoutInRect:]
- Android之MessageQueue、Looper、Handler与消息循环
- 1.String、Stringbuffer、Stringbuilder之间的区别。
- 0777前面的0原来是叫个suid和guid的东西
- 使用UGUI制作血条中Slider的value控制
- Android Stuido Ndk-Jni 开发(三):Jni基本语法
- 默认系统为UEFI启动的GPT分区的WIN7(8),如何安装VHD的UEFI WIN8(7)
- iOS UIScrollView不能响应touchBegin的解决方法
- Android Stuido Ndk-Jni 开发(二):Jni中打印log信息
- iOS UITextFiled设置样式为有下划线的那种
- iOS-OC-UISearchBar取消搜索状态
- Gradle构建项目时,将敏感信息保存在build.gradle之外
- Android Stuido Ndk-Jni 开发(一):创建简单的JniDemo
- 最长上升子序列 LIS (Longest Increasing Subsequence)
- Android Studio中的错误,finished with non-zero exit value 1