Поскольку вам нужны только шесть цифр, вам, вероятно, придется выполнить некоторую маскировку, чтобы убедиться, что число соответствует требуемому. Примерно так:
sprintf(buffer, "%06lx", (unsigned long)val & 0xFFFFFFUL);
Имейте в виду, что вы отображаете все длинные целые числа в небольшой диапазон представлений. Вы можете проверить, находится ли число в определенном диапазоне, перед его печатью (например, -2 ^ 23