我有一个具有这种排列的 uchar 数组:
uchar a={LowByte_val1 HighByte_val1 LowByte_val2 HighByte_val2 ...};
如何将此数组转换为(无循环)
uint b= [val1 val2 ...];
哪里
val1 = LowByte_val1+(HighByte_val1<<8);
我使用这个解决方案。
typedef union {
struct {
uchar lsb;
uchar msb;
}byteModel;
unsigned int data;
}XXX;
和
uchar a[24]={0,0,0,1,0,2,0,3, 1,0,1,1,1,2,1,3, 2,0,1,1,2,2,2,3};
XXX *input = new XXX[12];
然后:
memcpy(input,a,24);
但:(不起作用。
您可以使用:
char c[size];
int *i = (int*)c;
这将允许您访问与 int 和 char 相同的数据。
但请记住(我相信你已经是了)int 和 char 的大小不同。int 数组将"更短"。
编辑:有人指出,这仅适用于小端架构。如果您需要一个大端解决方案,我将向您指出本教程。如果您不知道其中任何一个是什么,我将向您指出这个问题和上面的教程。