您建议将这个数组转换为整数的这两种方法中的哪一种?

Poo*_*ria 1 c++ arrays performance integer

考虑以下要转换为单个无符号整数的字节数组:

unsigned char arr[3] = {0x23, 0x45, 0x67};
Run Code Online (Sandbox Code Playgroud)

每个字节表示整数的等效字节,现在您将特别建议以下方法之一:

unsigned int val1 = arr[2] << 16 | arr[1] << 8 | arr[0];
//or
unsigned int val2=arr[0];
*((char *)&val2+1)=arr[1];
*((char *)&val2+2)=arr[2];
Run Code Online (Sandbox Code Playgroud)

fre*_*low 6

我更喜欢第一种方法,因为它是便携式的.第二个不是因为字节序问题.