c - 从 char 数组中提取第二个和第三个值并将其转换为短(2 字节)。在 C 中

标签 c arrays pointers casting

假设我有一个无符号字符(或字节)数组。我想从内存中获取 array[1] 和 array[2] 并将其转换为 short int(2 字节)。类似于 union 的工作方式,但不是从第一个字节开始。

例子:

#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);
}

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

谢谢。

编辑:我忘了说,但你们中的大多数人都从我的例子中了解到,我正在使用小端机器。 8 位 Atmel 微 Controller 。

最佳答案

很简单:

unsigned short t = (a[2] << 8) | a[1];

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

关于c - 从 char 数组中提取第二个和第三个值并将其转换为短(2 字节)。在 C 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580604/

相关文章:

c - 为什么这个 C 程序没有给我想要的输出?

c - 将数组分配给不同的变量

c - memset() 中的错误 3D 数组

C: 如何解析 Json 请求中的值?

c - 如何访问由双指针表示的二维数组的元素作为 C 中的一维数组

c - 在下面的程序中,为什么 sizeof 返回的是初始化数组大小的两倍而不是多一个字节?

arrays - 遍历数组,将字符串转换为数组,推送到 Ruby 中的新数组

php - 从 Mysql 获取逗号分隔的字符串

c - 从指针数组中存储/获取值

c++ - 获取指针的地址