cat procsyskernelrandomuuid 为什么能得到

cat procsyskernelrandomuuid 为什么能得到,第1张

通用的GUID的结构如下typedefstruct_GUID{DWORDData1;WORDData2;WORDData3;BYTEData4[8];}GUID;举一个例子:假设一个GUID的格式是这样的6B29FC40-CA47-1067-B31D-00DD010662DA其中Data1是32位,可以看做8个四位十六进制数,对应于上面的6B29FC40其中Data2是16位,可以看做4个四位十六进制数,对应于上面的CA47其中Data3是16位,可以看做4个四位十六进制数,对应于上面的1067其中Data4比较特殊,是8个字节也就可以看做16个四位十六进制数取其Data4[0],Data4[1]来组成4个四位十六进制数,对应于上面的B31D取其Data4[2],Data4[3]来组成4个四位十六进制数,对应于上面的00DD取其Data4[4],Data4[5]来组成4个四位十六进制数,对应于上面的0106取其Data4[6],Data4[7]来组成4个四位十六进制数,对应于上面的62DA注意:四位十六进制数对应一个GUID字符。在Windows下提供了一个函数可以生成一个GUID。需要使用的头文件"objbaseh",需要链接的库ole32lib。HRESULTCoCreateGuid(GUIDpguid);在Linux下首先需要下载到相应的库文件和头文件如果是Debian用户可以方便的通过apt命令来获取相关资源。apt-getinstalluuid-dev安装完成后会发现在/usr/include/下有一个uuid文件夹,其中则包含了uuidh头文件。在/usr/lib/下有几个libuuid的链接库文件,包括静态和动态链接库。打开uuidh你会发现有一个uuid_generate(uuid_tout)的函数声明。我们可以通过调用这个函数来生成UUID。uuid_generate(reinterpret_cast(&guid));生成GUID是不是很简单!是的,因为生成的算法不用我们去实现,我们是站在前人的肩膀所以我们要感谢他们。下面给出一个WINDOWS和LINUX下通用的程序。//uuid_testcpp#include#include#include#include"uuid_testhpp"#ifdefWIN32#include#else#include#endifusingnamespacestd;namespaceChinuxTeam{GUIDCreateGuid(){GUIDguid;#ifdefWIN32CoCreateGuid(&guid);#elseuuid_generate(reinterpret_cast(&guid));#endifreturnguid;}std::stringGuidToString(constGUID&guid){charbuf[64]={0};#ifdef__GNUC__snprintf(#else//MSVC_snprintf_s(#endifbuf,sizeof(buf),"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",guidData1,guidData2,guidData3,guidData4[0],guidData4[1],guidData4[2],guidData4[3],guidData4[4],guidData4[5],guidData4[6],guidData4[7]);returnstd::string(buf);}}对应的头文件//uuid_testhpp"#include#include#includetypedefstruct_GUID{unsignedlongData1;unsignedshortData2;unsignedshortData3;unsignedcharData4[8];}GUID,UUID;namespaceChinuxTeam{GUIDCreateGuid();std::stringGuidToString(constGUID&guid);}//namespaceChinuxTeam

最后一个GuidToString()稍微解释一下,作用就是把GUID以固定的格式输出到标准string字符串中,根据编译器的不同调用分别调用了不同的字符串打印函数。

另外附一个简单的测试函数

#include#include#include#ifdefWIN32#include"objbaseh"#elsetypedefstruct_GUID{unsignedlongData1;unsignedshortData2;unsignedshortData3;unsignedcharData4[8];}GUID,UUID;#endifnamespaceChinuxTeam{GUIDCreateGuid();std::stringGuidToString(constGUID&guid);}运行后会生成一个GUID并打印到标准输出的控制台上。

UUID是用来唯一标识某个东西的,只要你的磁盘分区没有改变(比如:格式化等等),UUID一般是不会改变的! 你多次重启一下,并在每次重启之后,记一下UUID,看看它们是不全不同,还是有一次或几次不同!

以上就是关于cat /proc/sys/kernel/random/uuid 为什么能得到全部的内容,包括:cat /proc/sys/kernel/random/uuid 为什么能得到、紧急,请问Linux下dmidecode获取到的system uuid是根据什么生成、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9446953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存