C ++ UUID存储为整数

时间:2012-05-21 13:24:44

标签: c++ linux uuid

是否可以使用linux下的c ++将UUID转换为128位整数。一旦我将UUID转换为整数,我需要将16字节整数转换为字节数组,以便我可以通过TCP将其发送到另一台服务器。

据我所知(如果我错了,请纠正我),在C ++中没有开箱即用的处理16字节整数的支持,请你详细介绍一下如何做到这一点?如果无法存储并以整数形式发送它,我正在考虑将uuid作为字符串发送。

2 个答案:

答案 0 :(得分:4)

为什么要将其表示为128位整数?

UUID是如何代表的?据推测它是一个字符串或已经是一些16字节类型。如果它是一个字符串,那么你可以自己计算16字节的数组表示,如果它已经是一个16字节长的类型,那么你可以直接将其视为一个16字节的数组。

与往常一样,无论你做什么,你都必须确保所有各方都同意网络表示的字节顺序。


C ++实现不需要具有128位整数类型,但其中一种内置类型可能是128位。也许是long long。或者您的实现可能提供可以使用的扩展整数类型。

Clang和我认为GCC都支持类型__uint128_t,但遗憾的是,这种类型的扩展整数不遵循C ++要求。但是128位算术应该可以工作,所以你应该能够正常地将UUID粘贴到这种类型中,然后将其视为一个16字节的数组。

答案 1 :(得分:0)

要在C ++中实现16字节整数,可以查看:
http://straymindcough.blogspot.com/2012/01/on-int128t.html

至于:“是否可以在Linux下使用c ++将UUID转换为128位整数”。答案是肯定的。

亲切的问候,

相关问题