4x8位int到32位整数

gem*_*xas 2 c++ int 32-bit 8-bit

我有

_int8 arr[0] = 0;
_int8 arr[1] = 0;
_int8 arr[2] = 14;
_int8 arr[3] = 16;
Run Code Online (Sandbox Code Playgroud)

我需要使用as arr [0]作为第一部分<..>和arr [3]将其转换为一个_int32.最后它应该是

_int32 back = 3600;
Run Code Online (Sandbox Code Playgroud)

我应该使用位移或smth来达到这个目的吗?

Pet*_*der 8

把它们全部投入int使用:

(arr[0] << 24) | (arr[1] << 16) | (arr[2] << 8) | arr[3]
Run Code Online (Sandbox Code Playgroud)

或者:

_int32 back = 0;
for (int i = 0; i < 4; ++i)
    back = (back << 8) | arr[i];
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望或需要转换为uint以避免符号位扩展的问题. (3认同)