If you intend to store or transfer arbitrary binary data, you should use …. unsigned char. ANSI-C has no “byte” data type.
It is the only data type that is guaranteed (by the ANSI C Standard) to have no padding bits. So all 8 bits in an unsigned char contribute to the value. None of them is a padding bit.
Contrary to some online posts, unsigned-char type is different from “char” —
- https://msdn.microsoft.com/en-us/library/296az74e.aspx states that “char” has range -128 to 127
- https://corecplusplustutorial.com/differences-and-uses-signed-and-unsigned-char-type/ even has a diagram showing the range.