void long_2_hex(unsigned long l, unsigned char *c)
union LC {
unsigned long ul;
unsigned char uc[4];
} lc;
lc.ul = l;
*c = lc.uc[0] + '0';
*(c+1) = lc.uc[1] + '0';
}
Можно и другие способы придумать. Через printf это выглядело бы примерно так:
printf("%02x%02x", (l >> 24) & 0xff, (l >> 18) & 0xff);