c语言把字符串b[]={“880012345678”}转uint8 a={0x88,0x00,0x12,0x34,0x56,0x78}
时间: 2024-11-30 13:18:49 浏览: 3
16进制转字符串
在C语言中,将字符数组"880012345678"转换成`uint8_t`类型的整数数组通常是通过遍历字符串并逐个提取每一位数字,然后将其转换为对应的十六进制值。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 将字符串转换为uint8_t数组
void str_to_uint8(char b[], uint8_t a[6]) {
int i = 0;
for (i = 0; i < strlen(b); i++) {
if (b[i] >= '0' && b[i] <= '9') { // 如果是数字字符
a[i] = b[i] - '0'; // 转换为十进制数值
} else if (b[i] >= 'A' && b[i] <= 'F') { // 如果是小写的十六进制字符
a[i] = b[i] - 'A' + 10; // 转换为十进制数值(对应10)
} else if (b[i] >= 'a' && b[i] <= 'f') { // 如果是大写的十六进制字符
a[i] = b[i] - 'a' + 10; // 转换为十进制数值(对应10)
} else { // 非数字或十六进制字符,跳过
break;
}
}
// 只有当字符串全为十六进制字符并且长度正好是6位(即3字节)时,才填充剩余的0
while (i < 6) {
a[i++] = 0; // 填充0
}
}
int main() {
char b[] = "880012345678";
uint8_t a[6];
str_to_uint8(b, a);
// 打印转换后的数组,注意这里是二进制表示,不是十六进制
for (int i = 0; i < sizeof(a); ++i) {
printf("a[%d] = %u\n", i, a[i]);
}
return 0;
}
```
阅读全文