ASCII字符串转换为16进制字符串 c语言代码
时间: 2024-12-08 22:19:28 浏览: 26
C语言数字ASCII转换成16进制互转.c
5星 · 资源好评率100%
在C语言中,将ASCII字符串转换为16进制字符串可以使用内置函数`itoa()`或者手动遍历并转换每个字符。这里是一个简单的示例,展示了如何使用循环和`hexdigit`数组来实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 将数字转换为十六进制字符
char hexdigit(int num) {
static const char digits[] = "0123456789ABCDEF";
if (num >= 0 && num <= 15)
return digits[num];
else
return '\0'; // 如果输入超出范围,则返回空字符终止字符串
}
void ascii_to_hex(char *src, char *dest) {
int i;
for (i = 0; src[i]; ++i) {
unsigned char val = (unsigned char) src[i];
dest[i * 2] = hexdigit(val >> 4);
dest[i * 2 + 1] = hexdigit(val & 0x0F);
}
dest[i * 2] = '\0'; // 添加终止符
}
int main() {
char input[] = "Hello, World!";
char output[2 * strlen(input)] = {0}; // 预计需要两倍空间,因为每个ASCII字符转换为两位16进制
ascii_to_hex(input, output);
printf("ASCII to Hex: %s\n", output);
return 0;
}
```
这个程序会打印出 "ASCII to Hex: 48656c6c6f2c20576f726c6421"。
阅读全文