Arrays 如何从C中的U8数组中获取U16变量?

Arrays 如何从C中的U8数组中获取U16变量?,arrays,c,Arrays,C,我正在将数据从一块PIC32板发送到另一块。请注意,电路板之间的通信工作正常。 这是我的代码: Main.c 另一个.c(从另一块板接收数据的函数) 我在这里的问题是:我可以成功地获得在1字节上编码的数据,但是当试图获得在2字节上编码的数据“nombergoutterecu”时,我只得到第一个字节,而另一个总是00。我是C编程的初学者,所以我在这里找不到确切的问题。请帮忙 更通用: U16 getU16(const U8 *u8, size_t pos) { return u8[pos]

我正在将数据从一块PIC32板发送到另一块。请注意,电路板之间的通信工作正常。 这是我的代码: Main.c

另一个.c(从另一块板接收数据的函数)

我在这里的问题是:我可以成功地获得在1字节上编码的数据,但是当试图获得在2字节上编码的数据“nombergoutterecu”时,我只得到第一个字节,而另一个总是00。我是C编程的初学者,所以我在这里找不到确切的问题。请帮忙

更通用:

U16 getU16(const U8 *u8, size_t pos)
{
    return u8[pos] + (u8[pos + 1] << 8);
}

很好,不过还是谢谢你。实际上,我只从发送器板发送了一个字节,这就是为什么我只收到一个字节,而另一个字节只是自动填充。

也许该值足够小,以至于上面的字节将保持为零?价值是什么?它应该是什么?如果不知道它应该是什么价值观,或者不知道它应该是什么价值观,就很难进一步帮助你。例如,
GetDataTrameVenantMaitre
函数做什么?它如何初始化返回指针的内存?
MyMemcpy
函数做什么?它是否按预期工作?您可以使用
nombreGoutteRecu=dataVenantMaitre[0]+(dataVenantMaitre[1]您确定这些函数返回两个字节的数据吗?或者是否可以得到两个字节的数据?我建议检查或打印
getTaileDataTramevenantMaitre
GetDataTrameVenantMaitre
的结果,例如
printf(“长度=%u\n数据:\n”,(unsigned int)longueDataVenantMaitre);例如(uint8_t i=0;i
这意味着你的问题作为其他人的参考没有意义,因此我建议删除它。
BYTE *GetDataTrameVenantMaitre(U16 num_com)
{
    return dialogue[num_com_to_dial[num_com]].trame.data;
}
U16 getU16(const U8 *u8, size_t pos)
{
    return u8[pos] + (u8[pos + 1] << 8);
}
U16 getU16_1(const U8 *u8, size_t pos)
{
    U16 val; 
    memcpy(&val, u8 + pos, sizeof(val));
    return val;
}