急怎样将一个长整数转化为16进制并写入到一个二进制文件中?该怎么处理

急~~~怎样将一个长整数转化为16进制并写入到一个二进制文件中???
例如一个长整数12345678,转化为16进制后为0xBC614E,而且按倒序写入到一个4字节的二进制文件中,就是写进文件的内容为4E   61   BC   00,怎样写函数出来???谢了!!!!

------解决方案--------------------
#include <iostream>
using namespace std;

void lToHex(long lnum, char *hOut)
{
long ihex,i,j=0;
long str[50];

while(lnum /16)
{
ihex = lnum % 16;
str[j++] = ihex;
lnum /= 16;

}

str[j++] = lnum;

i = 0;
while(j--)
{

if( str[j] > =0 && str[j] <= 9)
hOut [i++] = str[j] + 48;
else
{
switch(str[j])
{
case 10:
hOut[i++] = 'A ';
break;
case 11:
hOut[i++] = 'B ';
break;
case 12:
hOut[i++] = 'C ';
break;
case 13:
hOut[i++] = 'D ';
break;
case 14:
hOut[i++] = 'E ';
break;
case 15:
hOut[i++] = 'F ';
break;
default:
break;
}
}
}
hOut[i] = '\0 ';

return;
}

void main()
{
long l = 12345678;
char str[20];
lToHex(l ,str);
cout < < str < < endl;
}
下面写到文件很简单了,不帮你写了!~~~
------解决方案--------------------
CFile fl(...);
DWORD dwData = 12345678;
fl.Write(&dwData, sizeof(DWORD));
fl.Close();
------解决方案--------------------
在Mackz的基础上作一点补充, 可先测试一下CPU字节顺序是little endian 还是 big endian,
如果是后者, 则先将DWORD的字节顺序反转, 再写入文件.
------解决方案--------------------
楼上的简单,但我在实际测试不可行。

我的方法是这样的:

long lt = 123456789;
char szLt[32]={0};
sprintf(szLt, "%0x ", lt);
FILE *fp = fopen( "test.txt ", "a+); "
fwrite(szLt, 1,strlen(szLt), fp);
fclose(fp);
------解决方案--------------------
哦,我说的是Mackz的,测试12345678写入到文件的是Na 。