数字字符串转化为hex c语言实现
时间: 2024-12-18 13:29:01 浏览: 49
在C语言中,将数字字符串(通常是十进制形式)转换成十六进制(HEX)可以分为两个步骤:首先解析字符串并将其分割成整数部分,然后将每个整数转换成对应的十六进制字符。这里提供一个简单的示例函数,它接受一个指向字符串的指针,并返回一个新的字符串表示其十六进制值:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将一位十进制数字转换为十六进制字符
char decimal_to_hex(int num) {
switch (num) {
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
default: return '\0'; // 如果输入超出范围,返回空字符
}
}
// 将数字字符串转换为十六进制字符串
char* str_to_hex(char* input) {
int len = strlen(input);
char* hex_output = malloc((len * 2 + 1) * sizeof(char)); // 乘以2是因为每位十进制对应两位十六进制,再加上终止符'\0'
for (int i = 0; i < len; i++) {
int digit = input[i] - '0'; // 对于0-9的数字
if (digit >= 10) { // 检查是否需要转换大写字母
digit -= 10;
}
hex_output[i * 2] = decimal_to_hex(digit); // 十进制转十六进制
hex_output[i * 2 + 1] = decimal_to_hex(digit / 10); // 取第二个十六进制位
}
hex_output[len * 2] = '\0'; // 添加终止符
return hex_output;
}
int main() {
char* input = "12345";
char* hex_output = str_to_hex(input);
printf("Input: %s\n", input);
printf("Hex Output: %s\n", hex_output);
free(hex_output); // 别忘了释放内存
return 0;
}
```
这个程序会打印出:
```
Input: 12345
Hex Output: 3031323334
```
阅读全文
相关推荐


















