编码/解码长

时间:2015-12-23 08:00:41

标签: 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;
};

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

实施例

systemID

1 个答案:

答案 0 :(得分:1)

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

然后,只需使用位掩码和位移进行编码/解码。远离位域,如果你想要便携式代码,它们就不容易使用。