c 语言 uint8 转char,关于c ++:将uint8_t *更改为char *?

博客探讨了如何在C++中将uint8_t类型的向量传递给需要const char*参数的API。文章描述了在尝试使用uint8_t向量的地址直接调用API时遇到的类型不兼容问题,并提供了使用reinterpret_cast和static_cast解决此问题的方法。同时,讨论了在C++中char和uint8_t之间的关系以及在不同环境下的强制转换安全性。
摘要由CSDN通过智能技术生成

我有一个请求char*的API,这是我的API函数:

CANMessage(unsigned _id,  const char* _data, char _len = 8)

此处提供更多信息:https://os.mbed.com/docs/mbed-os/v5.11/mbed-os-api-doxy/classmbed_1_1_c_a_n_message.html

我想从另一个函数中调用此函数,但是我对const char*和强制转换感到困惑。 我想从函数foo()调用此函数,如下所示:

void foo(unsigned int id, /*???*/ data, char len) {

CANMessage(id, data, len)

}

所以我需要将id,data和len传递给foo函数。 我的问题是,传入的data是uint8_t类型。 我得到了uint8_t的向量,其中第一个元素的地址是我需要传递的地址:

vector dta;

我尝试通过&dta[0]传递:foo(idNo, &dta[0], length)

使用foo函数是这样的:

void foo(unsigned int id, uint8_t* data, char len) {

CANMessage(id, (char*)data, len)

}

但是我得到"类型为std :: uint8_t的参数与char类型的参数不兼容*

当调用函数foo接受uint8_t*时,如何将其作为const char*传递?

请注意,我无法更改类型,dta必须保持vecto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值