C语言 16进制与ASCII相互转换 代码
时间: 2024-09-14 20:07:11 浏览: 42
在C语言中,我们可以使用标准库函数`htonl()`、`ntohl()`等进行16进制到网络字节序(通常用于ASCII字符)的转换,以及`printf()`、`sprintf()`等函数将ASCII数据格式化为16进制字符串。下面是一个简单的示例,展示了如何将ASCII字符转换成16进制表示:
```c
#include <stdio.h>
#include <arpa/inet.h>
void ascii_to_hex(char input_char, char* hex_output) {
unsigned char byte = (unsigned char)input_char;
snprintf(hex_output, 4, "%02X", byte);
}
int main() {
char ascii_char = 'A'; // 举例ASCII字符'A'
char hex[3]; // 存储16进制结果,需要预留前导'0x'
ascii_to_hex(ascii_char, hex);
printf("ASCII '%c' 的16进制表示为:%s\n", ascii_char, hex);
return 0;
}
```
同样,如果你想要从16进制字符串还原回ASCII字符,可以这样做:
```c
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
char hex_to_ascii(const char* hex_input) {
uint8_t byte = inet_addr(hex_input); // 将16进制转为地址
if (byte == INADDR_NONE) { // 检查是否成功转换
fprintf(stderr, "Invalid hexadecimal number.\n");
return '\0';
}
return (char)byte; // 返回对应ASCII字符
}
int main() {
char hex[] = "41"; // 例如16进制字符串'41'对应ASCII 'A'
char ascii_char;
ascii_char = hex_to_ascii(hex);
if (ascii_char != '\0') {
printf("Hexadecimal '%s' 对应的ASCII字符为:%c\n", hex, ascii_char);
}
return 0;
}
```
阅读全文