是否可以使用linux下的c ++将UUID转换为128位整数。一旦我将UUID转换为整数,我需要将16字节整数转换为字节数组,以便我可以通过TCP将其发送到另一台服务器。
据我所知(如果我错了,请纠正我),在C ++中没有开箱即用的处理16字节整数的支持,请你详细介绍一下如何做到这一点?如果无法存储并以整数形式发送它,我正在考虑将uuid作为字符串发送。
答案 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位整数”。答案是肯定的。
亲切的问候,
博