【发布时间】:2019-11-18 17:10:13
【问题描述】:
我有一个 uint8_t 数组,应该如下所示。
uint8_t code[1000] = {0x66, 0xba, 0xf8, 0x03}
现在我不能在该数组中硬编码值,我需要从char buffer[300] 中一一插入。 char buffer[300] 的内容是一个空格分隔的十六进制值字符串"66 ba f8 03"
我写的代码是-
char* token = strtok(buffer, " ");
// Keep printing tokens while one of the
// delimiters present in str[].
int pc = 0;
while (token != NULL) {
code[pc] = token; // This part is wrong. I need to cast it properly
token = strtok(NULL, " ");
pc++;
}
如何将字符串值转换为uint8_t 值?
【问题讨论】:
-
我会使用
strtol。这带有各种错误检查,您必须确保您的结果至少也适合uint8_t。 -
code[pc]是单个uint8_t值,token是一个指针 指向uint8_t值(即uint8_t *)。 -
为什么不改用
char* code[1000]? -
如果您不反对 brutal 解决方案,
(uint8_t) buffer[i]已经是您想要的。 -
@Someprogrammerdude 是的,这正是我想不出解决方案的原因