windows application 16进制转换的有关问题

windows application 16进制转换的问题
我用的是 c++Builder 2010

在一个windows application 中需要将一个10进制“DWORD”转换为16进制

用如下方法
C/C++ code

DWORD szParam;

sscanf(szParam,"%x",szParam);

会提示说

E2034 Cannot convert 'unsigned long' to 'const char *'

Type mismatch in parameter '__buffer' (wanted 'const char *', got 'unsigned long')
 



还要涉及到unsigned long 和 char的转换

有没有什么更简单的方法呢?谢谢各位前辈


------解决方案--------------------
sscanf需要第一个参数是字符串。
char str[100];
unsigned long a;
sprintf(str,"%ld",a);
sscanf(str,"%x",a);
其实我不明白lz为什么要这么做?得到16进制的形式但是值没变阿。。。
------解决方案--------------------
DWORD a = 0x12345678;
char buffer[32];
sprintf(buffer, "%x", a);
printf("%s\n", buffer);

------解决方案--------------------
BCB2010的话,要想一个dword以16进制显示在MEMO中可直接用

Memo1->Lines->Add(IntToHex(szParam,8));