您的位置:首页 > 产品设计 > UI/UE

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 进制数,其中,每两位一组,构成一个无符号的整数。

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

在 System.Guid 命名空间下有一个 NewGuid() 函数,可以生成 GUID 值。

比如,在 PowerShell 下输入:

[System.guid]::NewGuid()

就得到一个 GUID 值:

Guid

----

43ad2ba0_2471_4610_86ac_5e8e8836cc87
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: