c++ - Integer |= Char; operation ignoring high order byte in Integer -
Just a quick and specific question, it stumped me for about half an hour.
four * bytes = {0x01, 0xD8}; Int value = 0; Value = bytes [0]; // result1 (0x0001) is the value The last operation is interested in me, how is it changing the integer signed in -40 in 256?
Edit : For example, a large part of the example code has changed
In your case is equivalent to char signed four, which means that when you value 0xD8 to Char , then this is a negative number <. | Common arithmetic conversions that occur during the operation are cost-protection, so the negative number is preserved. To solve the problem, you can either create all your data types as unsigned when you have binary arithmetic or you can call value | = ((Unsigned char) buffer [0]) you can type or value | = Buffer [0] & amp; 0xFF .
Comments
Post a Comment