怎么和使用int 型存储超过它范围的数

如何和使用int 型存储超过它范围的数?
原本我有两个数 251631(这个是个随机数,范围可在0~999999) 和 704,
我需要把这两个数拼起来变成251631704,我至少还要记录这两个数其中一个的长度,长度是6或3,
我现在无论怎么拼接都会超出int所要表示的范围,即最大是2147483647.
能有什么办法在int 的范围内存这3个数(251631,704, 3 )并能够区分出来呢???

------解决方案--------------------
lz还在纠结这个问题啊。我不知道你怎么想的,不就是传两个数字过去嘛,没有这么纠结的,非要拼在一起做什么?定义个int a[2],保存不行吗?
------解决方案--------------------
做不到的 
楼主

------解决方案--------------------
楼主学习“位域”正当时。
尽管“位域”不一定能解决楼主的问题。
------解决方案--------------------
可以做到. 而且还多一点空间.

Union
{
  struct
  {
  unsigned int V1: 20, // 0~1048575
  unsigned int V2: 12  // 0~4095
  } actualValue;
  unsigned int retValue;
} ReturnType;

int CallTheLegacyFunc()
{
  ReturnType parse;
  parse.actualValue.v1=251631;
  parse.actualValue.v2 = 704;
  return parse.retValue;
}

ReturnType parse;
unsigned int ret = CallTheLegacyFunc();
parse.retValue = ret;

int v1 = parse.actualValue.V1;
int v2 = parse.actualValue.V2;