CN108595392B - 一种全局唯一标识符guid生成方法及装置 - Google Patents
一种全局唯一标识符guid生成方法及装置 Download PDFInfo
- Publication number
- CN108595392B CN108595392B CN201810422203.8A CN201810422203A CN108595392B CN 108595392 B CN108595392 B CN 108595392B CN 201810422203 A CN201810422203 A CN 201810422203A CN 108595392 B CN108595392 B CN 108595392B
- Authority
- CN
- China
- Prior art keywords
- value
- guid
- numerical value
- bits
- latitude
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种全局唯一标识符GUID生成方法及装置,该方法包括:获取待标记对象的位置坐标,根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值,将所述二进制长度小于128位的数值,作为所述GUID,其中,由于GUID的二进制长度小于128位,小于现有技术中的GUID的二进制的长度,因此,缩短了现有技术中GUID的二进制长度,减小了占用空间。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种全局唯一标识符GUID生成方法及装置。
背景技术
全局唯一标识符(Globally Unique Identifier,GUID),是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。主要可以用于在拥有多个节点、多台计算机的网络或系统中,让分布式系统中的所有元素,都能有唯一的辨识资讯。
但是,现有技术中,GUID二进制长度较长,占用空间较大。
发明内容
本发明的目的在于提供一种GUID生成方法及装置,用以解决现有技术中的GUID二进制长度较长,占用空间较大的问题。
为实现上述目的,本发明的技术方案为:
第一,本发明提供一种GUID生成方法,所述方法包括:
获取待标记对象的位置坐标;
根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值;
将所述二进制长度小于128位的数值,作为所述GUID。
进一步的,所述位置坐标中的各维度数据,分别为经度和纬度。
进一步的,根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值,具体包括:
根据所述经度和所述纬度,获取所述经度中的度、分、秒分别对应的第一数值、第二数值和第三数值,并获取所述纬度中的度、分、秒分别对应的第四数值、第五数值和第六数值;
根据第一公式,计算出第七数值,其中,所述第七数值对应的二进制长度为16位;
根据第二公式,计算出第八数值,其中,所述第八数值对应的二进制长度为24位;
将所述第七数值排列在所述第八数值前面得到的数值,作为所述二进制长度小于128位的数值;
其中,所述第一公式为:第七数值=第一数值*180+第四数值;
所述第二公式为:第八数值=第二数值<<18|第三数值<<12|第五数值<<16|第六数值&0x00FFFFFF。
进一步的,将所述二进制长度小于128位的数值,作为所述GUID之后,所述方法包括:
将所述GUID解析为位置坐标。
第二,本发明提供一种GUID生成装置,所述装置包括
获取模块,用于获取待标记对象的位置坐标;
转化模块,用于根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值;
确定模块,用于将所述二进制长度小于128位的数值,作为所述GUID。
进一步的,所述位置坐标中的各维度数据,分别为经度和纬度。
进一步的,所述转化模块,具体用于:
根据所述经度和所述纬度,获取所述经度中的度、分、秒分别对应的第一数值、第二数值和第三数值,并获取所述纬度中的度、分、秒分别对应的第四数值、第五数值和第六数值;
根据第一公式,计算出第七数值,其中,所述第七数值对应的二进制长度为16位;
根据第二公式,计算出第八数值,其中,所述第八数值对应的二进制长度为24位;
将所述第七数值排列在所述第八数值前面得到的数值,作为所述二进制长度小于128位的数值;
其中,所述第一公式为:第七数值=第一数值*180+第四数值;
所述第二公式为:第八数值=第二数值<<18|第三数值<<12|第五数值<<16|第六数值&0x00FFFFFF。
进一步的,所述装置还包括解析模块,用于:
在所述确定模块将所述二进制长度小于128位的数值,作为所述GUID之后,将所述GUID解析为位置坐标。
本发明具有如下优点:
通过获取待标记对象的位置坐标,根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值,将所述二进制长度小于128位的数值,作为所述GUID,其中,由于GUID的二进制长度小于128位,小于现有技术中的GUID的二进制的长度,因此,缩短了现有技术中GUID的二进制长度,减小了占用空间。
附图说明
图1为本发明提供的一种GUID生成方法的流程示意图;
图2为本发明提供的一种具体的GUID生成方法的流程示意图;
图3为本发明提供的一种GUID生成装置的结构示意图。
具体实施方式
以下实施例用于说明本发明,但不用来限制本发明的范围。
实施例1
为了解决现有技术中的GUID二进制长度较长,占用空间较大的问题,本发明实施例1提供一种GUID生成方法,该方法的流程示意图可参见图1,该方法包括下述步骤:
步骤101,获取待标记对象的位置坐标。
步骤102,根据预设规则,将位置坐标,转化为二进制长度小于128位的数值。
步骤103,将二进制长度小于128位的数值,作为GUID。
上述位置坐标中的各维度数据,分别可以为经度和纬度。若待标记对象是虚拟的,非实体,则可将某一虚拟系统中的所有待标记对象,赋予不重复的位置坐标。
若上述位置坐标中的各维度数据,分别为经度和纬度,则根据预设规则,将位置坐标,转化为二进制长度小于128位的数值的实现方式如下:
(1)根据经度和纬度,获取经度中的度、分、秒分别对应的第一数值、第二数值和第三数值,并获取纬度中的度、分、秒分别对应的第四数值、第五数值和第六数值。
其中,由于东经和西经可能存在数值相同的情况,南纬和北纬可能存在数值相同的情况,为了区别开来,可以事先设定,东经在度这一精度上的取值范围为0~180度,西经在度这一精度上的取值范围为181~360度,或者,东经在度这一精度上的取值范围为181~360度,西经在度这一精度上的取值范围为0~180度;南纬在度这一精度上的取值范围为0~90度,北纬在度这一精度上的取值范围为91~180度,或者,南纬在度这一精度上的取值范围为91~180度,北纬在度这一精度上的取值范围为0~90度。
(2)根据第一公式,计算出第七数值,其中,第七数值对应的二进制长度为16位。
其中,第一公式为:第七数值=第一数值*180+第四数值。
(3)根据第二公式,计算出第八数值,其中,第八数值对应的二进制长度为24位。
第二公式为:第八数值=第二数值<<18|第三数值<<12|第五数值<<16|第六数值&0x00FFFFFF。
(4)将第七数值排列在第八数值前面得到的数值,作为二进制长度小于128位的数值。
综上,最终得到的二进制长度小于128位的数值,二进制长度为40位。
在执行步骤103之后,可根据GUID获取到待标记对象所在的位置坐标,即可以将GUID解析为位置坐标。若位置坐标中的各维度数据,分别为经度和纬度,则可采用下述方法解析:
(1)根据第三公式,获取第一数值,其中,第三公式为:第一数值=[第七数值/180]。
(2)根据第四公式,获取第三数值,其中,第四公式为:第四数值=第七数值%180。
(3)根据第五公式,获取第二数值,其中,第五公式为:第二数值=(第八数值&0xFC0000)>>18。
(4)根据第六公式,获取第四数值,其中,第六公式为:第三数值=(第八数值&0x3F000)>>12。
(5)根据第七公式,获取第五数值,其中,第七公式为:第五数值=(第八数值&0xFC0)>>6。
(6)根据第八公式,获取第三数值,其中,第八公式为:第六数值=第八数值&0x3F。
其中,根据第一数值~第三数值,便可获取到经度,根据第四数值~第六数值,便可获取到纬度。
本发明实施例1中,需要说明的是,GUID的总数是2^40个,GUID的产生是非随机的,和待标记对象的位置坐标有关,因为空间不能重叠,在一定的精度要求下,可保证GUID具备唯一性。
GUID分为两部分,第一部分和第二部分,第一部分便为上文中提及的第七数值,第二部分便为上文中提及的第八数值,GUID的格式可以为:第一部分-第二部分,其中,若GUID用十六进制来表示,则上述格式可表示为XXXX-XXXXX,那么每个X可以是0~9,或a~f范围内的一个十六进制的数字。
GUID的第一部分,是由经度的度和纬度的度分别对应的数值生成的,用户可以根据实际需求,确定是否仅仅只计算第一部分,将第一部分确定为GUID。
GUID的第二部分,是有经度和纬度的分、秒分别对应的数值生成的,用户可根据实际需求,确定使用精度是否精确到秒或者更小。若用户想要将经度提高到微秒或毫秒,那么,可以用上文提及的算法,来计算出GUID,此处不再进行赘述,只不过最终得到的GUID的二进制长度会大于40,但是依然小于128。
其中,可将上述第一部分称为主码,将上述第二部分称为次码。那么,上述GUID的格式可以为主码-次码。主码对应的经纬度中的度的数值,用于粗略定位待标记对象的位置,次码对应的经纬度中的分、秒的数值,用于精确定位待标记对象的位置,若对待标记对象的位置要求不精确,可获取精度到度的经纬度,以主码作为GUID;若对待标记对象的位置要求精确,可以获取精度到秒的经纬度,以主码-次码作为GUID。
GUID的范围为[0x0000000000,0xFD1FEFBEFB]。
二进制长度为40位的最大数值为0xFFFFFFFFFF,GUID的保留值位于(0xFD1FEFBEFB,0xFFFFFFFFFF)之间,用户可以根据实际情况进行设置。
另外,本发明实施例1中,位置坐标除了可以为经度和纬度外,还可以是其他任意类型的物理坐标,生成方法参见上文提及的方法,这里不再赘述,其中,需要说明的是,上述其他任意类型的物理坐标,可能不具有唯一性,所以生成的位局部的GIUD,用于在某一系统中进行标识使用。
通过获取待标记对象的位置坐标,根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值,将所述二进制长度小于128位的数值,作为所述GUID,其中,由于GUID的二进制长度小于128位,小于现有技术中的GUID的二进制的长度,因此,缩短了现有技术中GUID的二进制长度,减小了占用空间。
另外,现有技术中,生成GUID的算法比较复杂,一般在电脑端上使用,并且因为使用了时钟计数,还要求使用GUID的设备具有一定精度的时钟系统,限制了现有技术中的生成GUID的算法的使用范围。现有技术中,不同的操作系统,产生的GUID是不同的,无法统一使用,只能在某一系统中使用。然而,本发明实施例1中提供的GUID生成方法,使用的仅仅为较为简单的运算,对设备没要求,适用范围较广。且,本发明实施例1提供的GUID生成方法所生成的GUID,可适用于任何操作系统。
再者,现有技术中的GUID,仅仅用于唯一标识待标记的对象,除此便无其他含义,而本发明实施例1中提供的GUID生成方法生成的GUID,除了可唯一标识待标记对象外,还可表示该待标记对象的地理位置信息。
实施例2
本发明实施例2提供一种具体的GUID生成方法,该方法的流程示意图可参见图2,该方法包括下述步骤:
步骤201,获取待标记对象的经度和纬度。
其中,经度为100度10分5秒,纬度为10度7分9秒。
步骤202,根据第一公式计算第七数值,根据第二公式计算第八数值。
步骤203,将第七数值排列在第八数值前面得到的数值作为GUID。
沿用上例,则第一数值~第七数值分别为100、10、5、10、7及9。那么,第七数值=100*180+10=18001,第七数值对应的二进制数值为01000110 0101 0001,第七数值对应的二进制长度为16位;第八数值=10<<18|5<<12|7<<6|9&0x00FFFFFF=2642377,第八数值对应的二进制数值为0010 1000 0101 0001 1100 1001,第八数值对应的二进制长度为24位。将第七数值排在第八数值的前面得到的数值180012642377,作为二进制长度小于128位的数值,即GUID。
在一种实施场景中,GUID的格式可以为:第七数值-第八数值,那么沿用上例,GUID可以为18001-2642377,若用二进制来表示,则可以为0100 0110 0101 0001-0010 10000101 0001 1100 1001,若用十六进制来表示,则可以为4651-2851C9,其中4651是18001对应的十六进制数值,2851C9是2642377对应的十六进制数值。
通过获取待标记对象的位置坐标,根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值,将所述二进制长度小于128位的数值,作为所述GUID,其中,由于GUID的二进制长度小于128位,小于现有技术中的GUID的二进制的长度,因此,缩短了现有技术中GUID的二进制长度,减小了占用空间。
实施例3
本发明实施例3提供一种GUID生成装置,该装置的结构示意图可参见图3,该装置包括:
获取模块301,用于获取待标记对象的位置坐标。
转化模块302,用于根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值。
确定模块303,用于将所述二进制长度小于128位的数值,作为所述GUID。
在一种实施场景中,所述位置坐标中的各维度数据,分别为经度和纬度。
在一种实施场景中,所述转化模块302,具体用于:
根据所述经度和所述纬度,获取所述经度中的度、分、秒分别对应的第一数值、第二数值和第三数值,并获取所述纬度中的度、分、秒分别对应的第四数值、第五数值和第六数值;
根据第一公式,计算出第七数值,其中,所述第七数值对应的二进制长度为16位;
根据第二公式,计算出第八数值,其中,所述第八数值对应的二进制长度为24位;
将所述第七数值排列在所述第八数值前面得到的数值,作为所述二进制长度小于128位的数值;
其中,所述第一公式为:第七数值=第一数值*180+第四数值;
所述第二公式为:第八数值=第二数值<<18|第三数值<<12|第五数值<<16|第六数值&0x00FFFFFF。
在一种实施场景中,所述装置还包括解析模块,用于:
在所述确定模块将所述二进制长度小于128位的数值,作为所述GUID之后,将所述GUID解析为位置坐标。
通过获取待标记对象的位置坐标,根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值,将所述二进制长度小于128位的数值,作为所述GUID,其中,由于GUID的二进制长度小于128位,小于现有技术中的GUID的二进制的长度,因此,缩短了现有技术中GUID的二进制长度,减小了占用空间。
需要说明的是,实施例1~3中提及的各技术特征可自由组合,本发明对此不进行任何限定。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (4)
1.一种全局唯一标识符GUID生成方法,其特征在于,所述方法包括:
获取待标记对象的位置坐标;
根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值;
将所述二进制长度小于128位的数值,作为所述GUID;
所述位置坐标中的各维度数据,分别为经度和纬度;若待标记对象是虚拟的,非实体,则将某一虚拟系统中的所有待标记对象,赋予不重复的位置坐标;
根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值,具体包括:
根据所述经度和所述纬度,获取所述经度中的度、分、秒分别对应的第一数值、第二数值和第三数值,并获取所述纬度中的度、分、秒分别对应的第四数值、第五数值和第六数值;
根据第一公式,计算出第七数值,其中,所述第七数值对应的二进制长度为16位;
根据第二公式,计算出第八数值,其中,所述第八数值对应的二进制长度为24位;
将所述第七数值排列在所述第八数值前面得到的数值,作为所述二进制长度小于128位的数值;
其中,所述第一公式为:第七数值=第一数值*180+第四数值;
所述第二公式为:第八数值=第二数值<<18|第三数值<<12|第五数值<<16|第六数值&0x00FFFFFF;
GUID分为两部分,第一部分和第二部分;GUID的第一部分,是由经度的度和纬度的度分别对应的数值生成的,可以根据实际需求,确定是否仅仅只计算第一部分,将第一部分确定为GUID;
GUID的第二部分,是有经度和纬度的分、秒分别对应的数值生成的,用户可根据实际需求,确定使用精度是否精确到秒。
2.如权利要求1所述的方法,其特征在于,将所述二进制长度小于128位的数值,作为所述GUID之后,所述方法包括:
将所述GUID解析为位置坐标。
3.一种GUID生成装置,其特征在于,所述装置包括:
获取模块,用于获取待标记对象的位置坐标;
转化模块,用于根据预设规则,将所述位置坐标,转化为二进制长度小于128位的数值;
确定模块,用于将所述二进制长度小于128位的数值,作为所述GUID;
所述位置坐标中的各维度数据,分别为经度和纬度;若待标记对象是虚拟的,非实体,则将某一虚拟系统中的所有待标记对象,赋予不重复的位置坐标;
所述转化模块,具体用于:
根据所述经度和所述纬度,获取所述经度中的度、分、秒分别对应的第一数值、第二数值和第三数值,并获取所述纬度中的度、分、秒分别对应的第四数值、第五数值和第六数值;
根据第一公式,计算出第七数值,其中,所述第七数值对应的二进制长度为16位;
根据第二公式,计算出第八数值,其中,所述第八数值对应的二进制长度为24位;
将所述第七数值排列在所述第八数值前面得到的数值,作为所述二进制长度小于128位的数值;
其中,所述第一公式为:第七数值=第一数值*180+第四数值;
所述第二公式为:第八数值=第二数值<<18|第三数值<<12|第五数值<<16|第六数值&0x00FFFFFF;
GUID分为两部分,第一部分和第二部分;GUID的第一部分,是由经度的度和纬度的度分别对应的数值生成的,可以根据实际需求,确定是否仅仅只计算第一部分,将第一部分确定为GUID;
GUID的第二部分,是有经度和纬度的分、秒分别对应的数值生成的,用户可根据实际需求,确定使用精度是否精确到秒。
4.如权利要求3所述的装置,其特征在于,所述装置还包括解析模块,用于:
在所述确定模块将所述二进制长度小于128位的数值,作为所述GUID之后,将所述GUID解析为位置坐标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810422203.8A CN108595392B (zh) | 2018-05-04 | 2018-05-04 | 一种全局唯一标识符guid生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810422203.8A CN108595392B (zh) | 2018-05-04 | 2018-05-04 | 一种全局唯一标识符guid生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595392A CN108595392A (zh) | 2018-09-28 |
CN108595392B true CN108595392B (zh) | 2022-02-01 |
Family
ID=63620853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810422203.8A Active CN108595392B (zh) | 2018-05-04 | 2018-05-04 | 一种全局唯一标识符guid生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595392B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101959121A (zh) * | 2009-07-14 | 2011-01-26 | 阿孜古丽吾拉木 | 一种地理位置服务标识编码技术 |
WO2012013008A1 (zh) * | 2010-07-29 | 2012-02-02 | 中兴通讯股份有限公司 | 管理终端数据记录的方法及装置 |
CN104298740A (zh) * | 2014-10-09 | 2015-01-21 | 清华大学 | 地理位置编码方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103280152A (zh) * | 2013-05-16 | 2013-09-04 | 浪潮通信信息系统有限公司 | 一种基于经纬度坐标转化码的楼宇建筑编码方法 |
CN104008128A (zh) * | 2014-04-24 | 2014-08-27 | 深圳辉锐天眼科技有限公司 | 案件信息自动生成与呈现方法 |
-
2018
- 2018-05-04 CN CN201810422203.8A patent/CN108595392B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101959121A (zh) * | 2009-07-14 | 2011-01-26 | 阿孜古丽吾拉木 | 一种地理位置服务标识编码技术 |
WO2012013008A1 (zh) * | 2010-07-29 | 2012-02-02 | 中兴通讯股份有限公司 | 管理终端数据记录的方法及装置 |
CN104298740A (zh) * | 2014-10-09 | 2015-01-21 | 清华大学 | 地理位置编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108595392A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11397724B2 (en) | Method and apparatus for obtaining area speed limit value and terminal device | |
CN106919567B (zh) | 一种兴趣点poi地址的处理方法及装置 | |
CN109600186B (zh) | 时钟同步方法及装置 | |
CN108009346B (zh) | 根据dxf格式工程图快速绘制svg格式地图的方法 | |
CN103178998A (zh) | 一种测控数据传输方法和装置 | |
KR20210151726A (ko) | 교통 데이터의 분석 방법, 장치, 기기, 차량, 저장 매체 및 컴퓨터 프로그램 | |
CN102967303A (zh) | 地理位置快速查找定位系统及方法 | |
CN101882175B (zh) | 离心标牌制作计算机绘图方法 | |
CN104809250A (zh) | 一种松散式数据一致性校验方法 | |
CN108595392B (zh) | 一种全局唯一标识符guid生成方法及装置 | |
CN108093474B (zh) | 利用虚拟时间同步实现室内定位的方法及系统 | |
CN104684078B (zh) | 基于仿真逼近的多基站定位算法 | |
JP2019158608A (ja) | 位置推定装置、位置推定プログラム、および位置推定方法 | |
CN109327354B (zh) | 一种生成信号转发测试用例的方法、装置及测试系统 | |
CN111460237A (zh) | 一种数据查询的方法、装置、可读存储介质和电子设备 | |
CN104135547B (zh) | 一种ip地址属性验证方法和系统 | |
CN103490856B (zh) | 用于深空探测的Mark5B格式VLBI数据接收解码与纠错系统及方法 | |
CN111800524B (zh) | Modbus报文中多路数据原地址的解析方法 | |
CN108055257A (zh) | 一种fpga辅助高性能计算方法及fpga | |
CN102098724B (zh) | 一种定位方法、及上报回环时间的方法装置 | |
CN114579580A (zh) | 存储数据的方法、查询数据的方法和装置 | |
CN105279299A (zh) | 电缆管线的线路生成方法和装置 | |
CN114553819A (zh) | 一种IPv6地址识别方法及装置 | |
CN109254666B (zh) | 虚拟现实设备定位同步方法、装置、设备和介质 | |
CN106802931B (zh) | 基于影响分析进行数据表查找的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |