使用C++我需要将两个不同ID组合为一个16位整数。然后,我需要将这个16位整数解码为两个原始ID值。将两个整数合并为一个并稍后解码
实施例:
// Store two integers into one
unsigned short Identifier1 = 12793; //(maximum number 30000)
unsigned short Identifier1 = 5450; //(maximum number 30000)
unsigned short CombinedIDs = 34283; // this is example, I don't know the code for that
// Decode one integer into two
// At this point I only have CombinedIDs value, I need to extract it
// into the two original IDs
unsigned short OriginalIdentifier1 = ...CombinedIDs.. code to get 12793
unsigned short OriginalIdentifier2 = ...CombinedIDs.. code to get 5450
信息论告诉我们,在一般情况下这是不可能的。如果您的标识符的最大值为30000,那么它们需要每个存储15位。它们共同包含30位信息。您不能将30位信息压缩成16位整数。 – HighCommander4
这是功课吗? – Dhara
如果您需要最大30k,我会考虑使用32位结果。 – chris