16进制转字符串 C语言
时间: 2023-08-30 22:09:07 浏览: 237
16进制转字符串
可以使用sprintf函数将16进制转换为字符串,示例如下:
```C
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex[] = "68656c6c6f20776f726c64"; // 16进制字符串
char str[sizeof(hex)/2]; // 转换后的字符串
int i;
for (i = 0; i < sizeof(hex)-1; i += 2) {
/* 将hex中的两个字符转换为一个整型 */
int byte = hex[i/2];
if ('0' <= byte && byte <= '9') {
byte -= '0';
} else if ('a' <= byte && byte <= 'f') {
byte -= 'a' - 10;
} else if ('A' <= byte && byte <= 'F') {
byte -= 'A' - 10;
} else {
fprintf(stderr, "invalid hex string\n");
exit(1);
}
str[i/2] = (byte << 4); /* 保存高4位 */
byte = hex[i/2+1]; /* 处理低4位 */
if ('0' <= byte && byte <= '9') {
byte -= '0';
} else if ('a' <= byte && byte <= 'f') {
byte -= 'a' - 10;
} else if ('A' <= byte && byte <= 'F') {
byte -= 'A' - 10;
} else {
fprintf(stderr, "invalid hex string\n");
exit(1);
}
str[i/2] |= byte;
}
/* 打印转换后的字符串 */
printf("转换后的字符串:%s\n", str);
return 0;
}
```
运行结果:
```
转换后的字符串:hello world
```
阅读全文