怎么将10进制转成定长的16进制输出?

如何将10进制转成定长的16进制输出??
如d=119807(10进制)   对应的16进制为1d07b

现定义一字符数组h[8],用itoa(d,h,16)转换时得到h[8]= "1d07b ",如何得到h[8]= "0001d07b "。

------解决方案--------------------
用两个字符数组
char h[8],h1[8],*p;
itoa(d,h1,16);
p = &h[7 - strlen(h1)];
strcpy(p,h1);
for (i = 0 ; i < 7-strlen(h1) ; ++i)
h[i] = 0;
------解决方案--------------------
sprintf(h, "%08X ", d);