Цитата(Angel D @ Dec 3 2011, 18:07)

Почему??
Потому что спецификатор x подразумевает аргумент типа unsigned int, а вы пытаетесь скормить ему unsigned char. В последнем случае нужно использовать hhx:
..
unsigned char outStr[1024];
...
sscanf("123", "%hhx", &outStr[0]);
P.S. Кроме того, число 0x123 в unsigned char может не влезть, если он восьмибитный. Может, имелось в виду десятичное? Тогда %hhd.