-1

我如何分配价值uint32_t key[4]

我最初有这个uint32_t iv[2] = {0xFFFFFFDD};

然后在我的第二次运行..我需要分配一个新值..让我们假设新值是

10273348653513887325 (decimal) but recorded as string for now.

string value = "10273348653513887325";

但我想将(十六进制)的值更改为iv(十进制)0xFFFFFFDD10273348653513887325

我该怎么做?

4

1 回答 1

0

你没有。10273348653513887325 作为小数将不适合 uint32_t。您可以假设 iv 是一个 64 位值,因此:

uint64_t* piv = (uint64_t*)&iv[0];
*piv = decValue; // where dec value is the decimal conversion of the string

但是在你这样做之后,你真正拥有的是两个 32 位值,每个值都有你要存储的值的一部分。仅仅因为这还不够尴尬,您正在使用的架构的字节序开始发挥作用。所以不要那样做。

另一种选择是使用 2 个 32 位值和一个 64 位值的匿名联合。

可能值得指出的是,分配

uint32_t iv[2] = {0xFFFFFFDD };

导致 iv 中的第一个元素具有该值,而第二个元素包含 0。这就是你的意思吗?

正如@hvd 所指出的,您想要实现的目标有些模糊。

于 2013-05-11T17:08:01.897 回答