使用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