如何在不使用循环的情况下将低字节和高字节的字符数组转换为它们的整数数组



我有一个具有这种排列的 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 数组将"更短"。

编辑:有人指出,这仅适用于小端架构。如果您需要一个大端解决方案,我将向您指出本教程。如果您不知道其中任何一个是什么,我将向您指出这个问题和上面的教程。

最新更新