我要求在C中使用无符号3字节类型。我正在寻找一种将它们打包成单个unsigned int的方法。
这是安全还是需要存储在24位大小的数组/结构中?
unsigned int pack_3Byte(unsigned char b1, unsigned char b2, unsigned char b3)
{
return (b1 << 16) | (b2 << 8) | (b3);
}
答案 0 :(得分:1)
你的代码是正确的,但是像奥拉夫说的那样你应该使用类型uint8_t和uint32_t来确保你的类型实际上是你期望的宽度。
现在这可能不是问题,但您还应该知道整数中的字节以不同的顺序存储在不同的处理器上。这称为endianness。