My itoa (c++)conversion has a problem
Isn't this the definition of itoa?
 #include &lt;stdlib.h&gt;

 char *itoa(int value, char *string, int radix);

If it is, your code should be:
 char buff[8];

 itoa(result, buff, 10);

If the maximum value of the MSByte is 127 since the argument is unsigned but the function receives an integer. If the MSBit of the number you build with the OR operation is 1, you will get negative numbers.