怎么将多个数字编码成一个数字,并且是可逆的

如何将多个数字编码成一个数字,并且是可逆的
我有一个需求,那就是假设有A,B,C三个整数,那么我需要把这三个数整合成X

通过X我又可以把A,B,C还原出来。

请问这个有没有好的算法?

------解决方案--------------------
CString str;
str.Format(_T("%d%d%d"),A,B,C);
int nGet = atoi(str);

----------
str.Format(_T("%d"),nGet);
int A = atoi(str.Mid(0,1));
int B = atoi(str.Mid(1,1));
int C = atoi(str.Mid(2,1));
------解决方案--------------------
可以参考对称加密算法。
------解决方案--------------------
首先要考虑一个问题,即是否会越界
另外,如果确定不会越界,那无非就是一个编码问题
------解决方案--------------------
3个数字正常的话是3个8位的字符,可以压缩编成10位的二进制值,可以还原。
------解决方案--------------------
如果X是一个字符串的话,方法就有了,把它们变成固定长度字符串,不够的补零,连在一起就行了。当然,如果这些数字有一定的规律,可以想办法连成更短一些的字符串。