用C语言将char buff[7]={0x31,0x32,0x33,0x34,0x35,0x2e;0x36},转换为uint8_t buff2[6]={0x1,0x2,0x3,0x4,0x5,0x6}
时间: 2023-10-03 16:04:15 浏览: 174
详解C语言中的char数据类型及其与int类型的转换
可以使用如下代码将char数组转换为uint8_t数组:
```c
#include <stdio.h>
#include <stdint.h>
int main() {
char buff[7] = {0x31, 0x32, 0x33, 0x34, 0x35, 0x2e, 0x36};
uint8_t buff2[6];
for(int i=0; i<6; i++) {
buff2[i] = buff[i] - 0x30;
}
for(int i=0; i<6; i++) {
printf("buff2[%d] = 0x%x\n", i, buff2[i]);
}
return 0;
}
```
输出结果为:
```
buff2[0] = 0x1
buff2[1] = 0x2
buff2[2] = 0x3
buff2[3] = 0x4
buff2[4] = 0x5
buff2[5] = 0x6
```
这里的思路是将char类型的字符减去0x30,得到对应的数字,再赋值给uint8_t类型的数组。因为字符'1'的ASCII码为0x31,'2'的ASCII码为0x32,以此类推,所以减去0x30就可以得到对应的数字。注意,这种方法只适用于输入的字符为数字。如果输入的字符中包含其他字符,需要进行额外的处理。
阅读全文