gpt4 book ai didi

将 uint8 和 uint32 变量转换为一个 uint64

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:47 25 4
gpt4 key购买 nike

我有以下变量。

uint8_t flags;
uint32_t token;

我需要编写将它们组合成一个 uint64_t 的函数,然后将它们解析回两个变量,一个 uint8_t 和一个 uint32_t。

uint64 convert(uint8_t flags, uint32_t token);
void convertBack(uint64 allTogether, uint8_t* flags, uint32_t* token);

我试图找到做以下事情的东西,但我发现的大部分是将两个相同的转换为一个更大的,比如两个 uint32_t 到一个 uint64_t

谢谢

最佳答案

怎么样:

uint64_t convert(uint8_t flags, uint32_t token)
{
return ((uint64_t) flags << 32) | token;
}

这会将 8 位字段“置于”32 位字段的“上方”,即返回的 uint64_t 的位排列如下:

 +---------------------------------+--------------------------------+
|666655555555554444444444|33333333|3322222222221111111111 |
|321098765432109876543210|98765432|10987654321098765432109876543210|
+------------------------+--------+--------------------------------+
| unused(24) |flags(8)| token(32) |
+------------------------+-----------------------------------------+

十进制的位数应向下读取,第 0 位在最右边(LSB)。

我将把 convertBack()(这是一个非常糟糕的名称,这两个名称都不是最佳名称)留给您。 :)

关于将 uint8 和 uint32 变量转换为一个 uint64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37860018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com