c语言编写一个函数把16进制转换字符串
时间: 2024-01-20 11:03:45 浏览: 34
下面是一个将16进制数转换为字符串的C语言函数:
```c
void hex_to_str(char *str, uint8_t *hex, size_t hex_len)
{
int i;
for (i = 0; i < hex_len; i++) {
sprintf(str + (i * 2), "%02x", hex[i]);
}
str[i * 2] = '\0';
}
```
使用示例:
```c
#include <stdio.h>
#include <stdint.h>
void hex_to_str(char *str, uint8_t *hex, size_t hex_len);
int main()
{
uint8_t hex[] = {0x12, 0x34, 0xab, 0xcd};
char str[9];
hex_to_str(str, hex, 4);
printf("%s\n", str);
return 0;
}
```
输出结果为:1234abcd
相关问题
生成一个16进制转为字符串的c语言函数
下面是一个将16进制转换为字符串的C语言函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *hex_to_string(const char *hex) {
size_t len = strlen(hex);
if (len % 2 != 0) {
return NULL;
}
char *str = malloc((len / 2) + 1);
if (str == NULL) {
return NULL;
}
int i, j;
for (i = 0, j = 0; hex[i] != '\0'; i += 2, j++) {
sscanf(&hex[i], "%2x", (unsigned int *) &str[j]);
}
str[j] = '\0';
return str;
}
```
该函数接受一个16进制字符串,并返回一个转换后的字符串。如果输入的16进制字符串的长度不是偶数,则返回NULL。
该函数首先计算出转换后字符串的长度,然后分配内存来存储该字符串。接下来,它循环遍历输入的16进制字符串,将每个字节转换为相应的字符并存储在输出字符串中。最后,该函数在输出字符串的末尾添加一个空终止符,并返回该字符串的指针。
C语言写一个函数将十六进制转换为十进制
以下是C语言实现将十六进制转换为十进制的函数:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int hex_to_decimal(char hex[]) {
int decimal = 0;
int len = strlen(hex);
for (int i = 0; i < len; i++) {
int digit = 0;
if (hex[i] >= '0' && hex[i] <= '9') {
digit = hex[i] - '0';
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
digit = hex[i] - 'a' + 10;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
digit = hex[i] - 'A' + 10;
} else {
printf("Invalid hexadecimal string.\n");
return 0;
}
decimal += digit * pow(16, len - i - 1);
}
return decimal;
}
int main() {
char hex[] = "1A4F";
int decimal = hex_to_decimal(hex);
printf("Hexadecimal %s in decimal is %d.\n", hex, decimal);
return 0;
}
```
在本示例中,我们定义了一个名为 `hex_to_decimal` 的函数,它接收一个十六进制字符串 `hex` 作为参数,并返回一个十进制整数。在函数内部,我们首先计算出十六进制字符串的长度 `len`,然后遍历字符串中的每个字符,并将其转换为十进制数。我们使用 `if-else` 语句来判断当前字符是数字还是字母,并计算出对应的十进制值。最后,我们使用 `pow` 函数计算出当前字符所表示的十进制值,并将其加到 `decimal` 变量中。遍历完字符串后,我们返回 `decimal` 变量的值。
在主函数中,我们定义了一个十六进制字符串 `hex`,并调用 `hex_to_decimal` 函数将其转换为十进制数。最后,我们输出转换后的结果。