Это должно сделать это.
int num = 500;
char text[8];
sprintf(text, "0x%d", num); // puts "0x500" in text
Предполагается, что вы намеренно не конвертировали num
в шестнадцатеричное, если это не было специально, это создает text
с целым числом, преобразованным в шестнадцатеричное:
int num = 500;
char text[8];
sprintf(text, "0x%X", num); // puts "0x1F4" in text