写一个C语言的char2Hex函数, 输入为char返回值为对应的Hex, unsigned char类型
时间: 2024-05-01 13:19:58 浏览: 20
好的,下面是 char2Hex 函数的 C 语言代码:
```c
unsigned char char2Hex(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else {
// 非法字符,返回0
return 0;
}
}
```
这段代码实现了将一个字符转化为对应的十六进制值。具体的实现方法是,如果字符在 '0' 到 '9' 的范围内,直接返回对应的数字;如果字符在 'a' 到 'f' 或者 'A' 到 'F' 的范围内,返回对应数字加上 10;如果字符不在这个范围内,返回 0。
相关问题
C语言 函数实现hex转char
可以使用 sprintf 函数将十六进制数转换为字符,具体实现如下:
```c
void hex_to_char(char* hex, char* str) {
int len = strlen(hex);
int i, j;
for (i = 0, j = 0; i < len; i += 2, j++) {
sprintf(str + j, "%c", (char) strtol(hex + i, NULL, 16));
}
str[j] = '\0';
}
```
其中,hex 是十六进制数的字符串表示,str 是转换后的字符数组。这个函数每次取两个字符,将其转换为一个字符,最终得到转换后的字符串。
C语言 函数实现hex转char并验证
以下是 C 语言函数实现 hex 转 char 并验证的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hex_to_char(const char *hex, char *out) {
size_t len = strlen(hex);
if (len % 2 != 0) {
return -1;
}
for (size_t i = 0; i < len; i += 2) {
char *endptr;
long val = strtol(hex + i, &endptr, 16);
if (*endptr != '\0') {
return -1;
}
*out++ = (char) val;
}
*out = '\0';
return 0;
}
int main() {
const char *hex = "48656c6c6f20576f726c64";
char buf[100];
if (hex_to_char(hex, buf) == 0) {
printf("Hex: %s\n", hex);
printf("Char: %s\n", buf);
} else {
printf("Invalid hex string\n");
}
return 0;
}
```
这个函数可以将一个十六进制字符串转换为对应的 ASCII 字符串,并且会验证输入的字符串是否是有效的十六进制字符串。如果输入的字符串不是有效的十六进制字符串,函数会返回 -1。