我通过CAN协议传输消息。
为了这样做,CAN消息需要uint8_t类型的数据。因此,我需要将我的char *转换为uint8_t。通过对该网站的研究,我编写了以下代码:
char* bufferSlidePressure = ui->canDataModifiableTableWidget->item(6,3)->text().toUtf8().data();//My char*
/* Conversion */
uint8_t slidePressure [8];
sscanf(bufferSlidePressure,"%c",
&slidePressure[0]);
正如您所看到的,我的char*
必须适合sliderPressure[0]
。
我的问题是,即使编译过程中没有错误,slidePressure中的数据完全不正确。实际上,我使用char* = 0
进行测试,得到了未知字符...因此,我认为问题必须来自于转换。
我的数据可以是Bool、Uchar、Ushort和float
。
感谢您的帮助。
char* buf = "0"; uint8_t slide[8]; sscanf(buf, "%c", &slide[0]); printf("%d", slide[0]);
- Charlie