[英]How do I typecast an array of uint16_t into an array of uint8_t?
我有一个对长度为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 *'类型分配给'uint8_t [32]'类型时不兼容的类型
有人知道我在做什么错吗?
uint8_t byteArray[32];
您不能分配给byteArray
。 它是一个数组,因此无法在C中进行修改。您可以改用指针,也可以重新考虑自己在做什么:本身的转换是一种代码味道,应避免。
既然您提到您有一个对此进行操作的函数,那么让该函数接受参数比使用全局对象好吗?
数组是元素的集合,不能像C中那样分配(甚至更少的类型转换)。 您可以逐个循环地进行操作,也可以重新考虑在所有地方都使用相同类型的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.