怎么将一个int类型的数据拆分和倒装

如何将一个int类型的数据拆分和倒装
这样的,比如 
int a = 12345678;
如何将它拆分为
int b = 1234;
int c = 56;
int d = 78;

然后就是倒序下变成 int e = 87654321;

不要转成字符创处理。。 怎么将一个int类型的数据拆分和倒装
------解决方案--------------------
int a=12345678;
int b=a/10000;//1234
int c=a%10000;//5678
int d=c%100;//78
c=c/100;//56
int e=0;
while(a>0)
{
       e=e*10;
       e=e+a%10;
       a=a/10;
}

------解决方案--------------------
	int a = 1357965482;
long long b,sum=0;
while(a!=0)//倒序
{
b = a%10;
a = a/10;
sum = sum*10+b;
};


截取也差不多这样把每一位给取出来
------解决方案--------------------
这样的,比如 
int a = 12345678;
如何将它拆分为
int b = 1234;
int c = 56;
int d = 78;

int b = a & 0xffff0000 >> 32; //==1234
int c  = a& 0xff00 >> 8; ///....
int d = a & 0xff;//.....

瞎搞。。。。。。。。。。。。。
------解决方案--------------------
int a = 12345678;
//如何将它拆分为
int b = a/10000; //1234;
int c = a/100%100; // 56;
int d = a%100; // 78;

//然后就是倒序下变成
int e = a%10               *10000000
       +a%100     /10      *1000000
       +a%1000    /100     *100000
       +a%10000   /1000    *10000
       +a%100000  /10000   *1000
       +a%1000000 /100000  *100
       +a%10000000/1000000 *10
       +a/10000000; // 87654321;

------解决方案--------------------
还是建立1个数组比较方便
------解决方案--------------------
仅供参考:
#include <iostream>
using namespace std;
#include <math.h>

class Num
{
public:
Num(int a);
int reserve() const;
int value() const;
int subNum(int b, int e) const;//分割整数
private:
int _a;
};

Num::Num(int a):_a(a){}

int Num::value() const
{
return _a;
}
int Num::reserve() const
{
int ra = 0;
int a = _a;
do
{
ra *= 10;
ra += a%10;
}while((a/=10)!=0);
return ra;
}

int Num::subNum(int b, int e) const//个位是0,十位是1 ,以此类推
{
if(b>e 
------解决方案--------------------
 b<0 )return 0;
int n = _a;
n %= (int)pow(10.0, e+1.0);
n /= (int)pow(10.0, b);
return n;
}
int main()
{
Num n(123456789);
cout<< n.value() <<endl
<< n.subNum(2,4)<<endl
<< n.reserve()<<endl
<< Num(n.subNum(2,4)).reserve() <<endl;
return 0;
}