假设我有一个函数应该能够从任何其他整数类型中提取任何整数类型(char
,int
,long
等),因为某些数据输出设备喜欢将小数据打包成更大的数据类型(即chars
中的4 uint32_t
)。我写了一个函数
此功能片段是否有意义?想得越多,我就会失去信心
if(data_type_size == SIZE_OF_UINT32){
uint32_t d = 0;
if(vector_type_size == SIZE_OF_CHAR){
for(size_t i = 0; i < length; i++){
d = data[i];
if(big_endian){
v.push_back((d & 0xFF000000) >> 24);
v.push_back((d & 0x00FF0000) >> 16);
v.push_back((d & 0x0000FF00) >> 8);
v.push_back((d & 0x000000FF));
}
// little endian
else {
v.push_back((d & 0x000000FF));
v.push_back((d & 0x0000FF00) >> 8);
v.push_back((d & 0x00FF0000) >> 16);
v.push_back((d & 0xFF000000) >> 24);
}
}
}
}
给出一个uint32_t
数组
data[0] = 0x0A0B0C0D;
data[1] = 0x0E0F1011;
上面的代码输出
0xa,0xb,0xc,0xd,0xe,0xf,0x10,0x11
0xd,0xc,0xb,0xa,0x11,0x10,0xf,0xe
这是我的期望。我想我开始变得偏执的地方在想...... 4F
实际上F4
有点小病吗?但是我不这么认为,因为这是字节的东西,而不是蚕食(?)的东西。