Befunge-93, 58
&:88+%"0"+:"9"`7*+\8/2/:!#|_#
,_@ >:#
First time doing a real golfing challenge in Befunge, I bet there's a one-liner for this that's shorter since all those spaces in the middle of the second line seem wasteful.
You can step through it here. Partial explanation:
&
: Take input.
:88+%
: Take the remainder modulo 16.
"0"+
: Add it to the ASCII value of 0.
:"9"`
: If the result is greater than the ASCII value of 9...
7*+
: Add 7 to convert it to a letter.
\
: Save the resulting character on the stack.
8/2/
: Divide by 16 rounding down.
:!#|_
: Exit the loop if the result is 0.
#
: Otherwise go back to the modulus step.
>:#,_@
(wrapping around): Once finished, output the stack in LIFO order.