Jep*_*sen 0 c++ buffer byte bytebuffer memcpy
我有以下结构:
struct sample {
uint8_t four;
bool b;
uint8_t two;
};
Run Code Online (Sandbox Code Playgroud)
为了发送udp数据包,我需要将这些值打包成一个字节:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+---+---+---+---+---+---+---+
| four | 0 | b | two |
+---------------+---+---+-------+
Run Code Online (Sandbox Code Playgroud)
在这个字节中复制struct值的最佳方法是什么?我在检查之前检查了前提条件,因此在将uint8_t值复制到更小的空间时不会丢失任何数据.
我只想使用一个函数:
uint8_t pack( const sample &s )
{
return ( s.four & 0xF ) | ( s.b << 5 ) | ( ( s.two & 3 ) << 6 );
}
Run Code Online (Sandbox Code Playgroud)
正如您所说的那样,检查数据范围可以简化为:
return s.four | ( s.b << 5 ) | ( s.two << 6 );
Run Code Online (Sandbox Code Playgroud)