如何把一串字符串“C80A0A0B050C0D060FA1B4DBEF6FDEC3B82E7B5CAD2A0BF1C7C0A80A0B208DFF”转化为 C8,0A,0A,0B,05,0C等16进制数,用C语言
时间: 2024-12-17 10:56:44 浏览: 15
在C语言中,你可以通过循环处理字符串,并使用`printf`函数的格式化功能将每个十六进制字符转换为对应的整数值。这里是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 函数用来将单个十六进制字符转换为对应的十进制值
int hex_to_decimal(char hex_char) {
if (hex_char >= '0' && hex_char <= '9') {
return hex_char - '0';
} else if (hex_char >= 'A' && hex_char <= 'F') {
return hex_char - 'A' + 10;
} else if (hex_char >= 'a' && hex_char <= 'f') {
return hex_char - 'a' + 10;
}
// 如果不是有效的十六进制字符,返回0
return 0;
}
// 主函数
void convert_hex_string_to_numbers(const char *str) {
int num = 0;
for (int i = 0; str[i]; i++) {
if (i % 2 == 0) { // 每两个字符一组表示一个十六进制数字
num = num * 16 + hex_to_decimal(str[i]);
}
printf("%d,", num); // 输出当前的十进制值,每个值之间用逗号分隔
}
printf("\n");
}
int main() {
const char *hex_str = "C80A0A0B050C0D060FA1B4DBEF6FDEC3B82E7B5CAD2A0BF1C7C0A80A0B208DFF";
convert_hex_string_to_numbers(hex_str);
return 0;
}
```
这个程序会打印出类似 `C8,0A,0A,0B,05,0C,...` 的结果。注意,由于十六进制通常包含奇偶位,所以我们在循环中每处理两个字符作为一个十六进制数字。
阅读全文