Unsigned int values gives negative number above the halfway point of max byte value?
I think the problem is the itoa() function. Its parameter is a normal signed integer, so your unsigned int is being coerced to a signed int.