繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM