I tried to reproduce but it worked all as expected (partly simulated) with Arduino 2009 && IDE 0021. A dive into the code of print() shows that the char is casted to a long before printing when using base HEX. For sources of print see C:\Program Files (x86)\arduino-0021\hardware\arduino\cores\arduino\print.cpp
3 questions:
- which arduino are you using?
- which ide version?
- is this happening in a big program that maybe runnning out or RAM?
Rob