假设我有一个无符号字符(或字节)数组。我想从内存中获取 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/