这是我的问题:我需要通过单个 uint32_t 传回两个 uint32_t(因为 API 的设置方式...)。我可以硬编码我需要的任何其他值来反转操作,但函数之间传递的参数需要保持单个 uint32_t。
如果我可以将两个 32 位整数移位成一个 64 位整数(如解释的 here ),这将是微不足道的,但编译器不会喜欢那样。我也看过数学 pairing functions ,但我不确定在这种情况下这是否是我所需要的。
我想过设置一个简单的密码:unint32_t 可以是密文,我可以对 key 进行硬编码。这是 example ,但这似乎有点矫枉过正。
这可能吗?
最佳答案
仅使用 32 位是不可能存储超过 32 位的信息的。这是信息论的一个基本结论。
如果您知道您只使用每个值的低 16 位,则可以将一个左移 16 位并以这种方式组合它们。但是,绝对没有办法将 64 位的信息(甚至 33 位)转化为 32 位的信息。
关于c++ - 在不更改数据类型的情况下可逆地组合两个 uint32_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21169203/