如何将uint16_t数组转换为uint8_t数组?

时间:2013-03-26 18:18:11

标签: c arrays casting

我有一个函数对长度为32的uint8_t数组执行操作。我想传递一个长度为16的uint16_t数组,并让它对此执行相同的操作数组,逐字节。

我试过这样做:

uint8_t byteArray[32];
void function(uint16_t *inArray)
{
    byteArray = (uint8_t *) inArray;
    ... do the byte-by-byte operations on byteArray
}

但是我收到了错误:

  从类型分配类型'uint8_t [32]'时,

不兼容的类型   'uint8_t *'

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:2)

uint8_t byteArray[32];

您无法分配到byteArray。它是一个数组,因此无法在C中修改。您可以使用指针代替或重新思考您正在做的事情:转换本身就是代码气味,应该避免使用。

既然你提到你有一个函数在运行,那么让函数接受参数比使用全局对象更好吗?

答案 1 :(得分:1)

数组是元素的集合,它不能像C中那样被赋值(甚至更少的类型转换)。你可以用元素循环元素来做,或者重新思考你在做什么,到处都使用相同的类型。