В моем приложении есть ситуация, когда приложение использует 128-разрядное целое число (в частности, __uint128_t
), и в какой-то момент приложение должно кодировать это 128-разрядное целое число как два 64-разрядных целых числа (__uint64_t
)).
(Просто предположите ради этого вопроса, что он должен их так кодировать - этот вопрос не об альтернативных способах его кодирования)
Как я могу это сделать?Я должен уметь кодировать и декодировать.
void encode(__uint128_t src, __uint64_t &dest1, __uint64_t &dest2)
{
// ...
}
void decode(__uint64_t src1, __uint64_t src2, __uint128_t &dest)
{
// ...
}
Пример использования:
__uint128_t bigIntBefore = 999999999999999999;
__uint64_t smallInt1;
__uint64_t smallInt2;
encode(bigIntBefore, smallInt1, smallInt2);
// ... later
__uint128_t bigIntAfter;
decode(smallInt1, smallInt2, bigIntAfter);
// bigIntAfter should have a value of '999999999999999999'