c++ - 从 long 编码/解码整数

标签 c++ encoding decoding

我有以下结构:

struct ID
{
   UINT id;         // range from 0 to 10 000 000
   UINT residentNb; // range same as for id (above).
};

struct FullID
{
   ID myID;
   ID systemID;
};

现在,上面结构ID 中的UINT id 在我的系统中指定了范围。此范围始终从最小 0 到最大 10 000 000。我想将结构 FullID 转换为一个数字,例如 UINT64,并能够编码/解码数据从它 - myIDsystemID(如上面的结构)。有可能吗,最好的方法是什么?当然,如果正确转换有必要,可以将 10 000 000 的限制四舍五入为某个更高的值。

例子

UINT64 encodedID;

(...)

FullID fullID = Decode(encodedID);

(...)

encodedID = Encode(fullID);

最佳答案

我建议使用 union 来避免严格别名优化错误(如果您不知道它是什么,请谷歌搜索严格别名)。

然后,只需使用位掩码和位移位进行编码/解码。远离位域,如果您想要可移植代码,使用它们并不容易。

关于c++ - 从 long 编码/解码整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431143/

相关文章:

http - 用于流式传输 A/V 提要的协议(protocol)

javascript - 如何在 JavaScript 中生成 Shift_JIS(SJIS) 百分比编码字符串

c++ - 使用 FFmpeg API 加载 G.729 解码器时出现问题

java - 尝试理解在标记重复之前 : InvalidKeyException: Illegal key size

java - 如何(便宜地)计算n个可能元素的所有可能的length-r组合

c++ - 有没有一种标准的方法来捕获在 linux 和 windows 的 c++ 应用程序中工作的键盘输入?

php - 如何在PHP中设置文本文件编码?

java - 如何将 netty ByteBuf 转换为 String,反之亦然

c++ - 具有可变参数的函数运行时错误

c++ - 从 MPL 元函数类创建仿函数