从char数组中提取第2和第3个值并将其转换为short(2个字节).在C.

Dra*_*uri 1 c arrays pointers casting

假设我有一个unsigned char(或byte)数组.我想从内存中取出array [1]和array [2]并将其转换为short int(2个字节).类似于联合的工作方式,但不是从第一个字节开始.

例:

#include <stdio.h>

void main()
{
    unsigned char a[28];
    unsigned short t;

    a[0]=12;
    a[1]=10;
    a[2]=55;

    t=(short) *(a+1);

    printf("%i", t);
}
Run Code Online (Sandbox Code Playgroud)

我想要的是十进制值14090.或370Ah.

谢谢.

编辑:我忘了说,但大多数人都从我的例子中了解到,我正在研究一台小端机器.一个8位Atmel微控制器.

Fid*_*its 6

这很简单:

unsigned short t = (a[2] << 8) | a[1];
Run Code Online (Sandbox Code Playgroud)

注意,这假设unsigned char是8位,这很可能是这种情况.

  • 没有字节序问题,因为Op已经为他的目的确定了字节顺序,因此这个答案中的方法将始终按定义工作 (2认同)