C++ UUID 存储为整数



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

据我所知(如果我错了,请纠正我(,在C++中处理 16 字节整数没有开箱即用的支持,您能否详细说明如何做到这一点?如果无法将其存储并作为整数发送,我正在考虑将 uuid 作为字符串发送。

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

UUID 如何表示?大概它是一个字符串或已经是一些 16 字节的类型。如果它是一个字符串,那么你可以自己计算 16 字节的数组表示形式,如果它已经是一些 16 字节长的类型,那么你可以直接将其作为 16 字节数组查看。

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


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

Clang和我认为GCC都支持类型__uint128_t,但不幸的是,它不遵循此类型的扩展整数的C++要求。但是,128位算术应该可以工作,因此您应该能够执行正常操作,将UUID粘贴到此类型中,然后将其视为16字节数组。

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

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

亲切问候

最新更新