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