用C语言实现一个字符串转16进制数组的函数模块
时间: 2023-12-21 16:50:00 浏览: 89
以下是一个用C语言实现的字符串转16进制数组的函数模块示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void str2hex(char *str, unsigned char *hex)
{
int len = strlen(str);
int i = 0, j = 0;
while (i < len)
{
char c = str[i];
if (c >= '0' && c <= '9')
hex[j] = c - '0';
else if (c >= 'a' && c <= 'f')
hex[j] = c - 'a' + 10;
else if (c >= 'A' && c <= 'F')
hex[j] = c - 'A' + 10;
else
hex[j] = 0;
i++;
c = str[i];
if (c >= '0' && c <= '9')
hex[j] = (hex[j] << 4) | (c - '0');
else if (c >= 'a' && c <= 'f')
hex[j] = (hex[j] << 4) | (c - 'a' + 10);
else if (c >= 'A' && c <= 'F')
hex[j] = (hex[j] << 4) | (c - 'A' + 10);
else
hex[j] = (hex[j] << 4);
i++;
j++;
}
}
int main()
{
char str[] = "48656C6C6F20576F726C64";
unsigned char hex[12];
str2hex(str, hex);
printf("Hex array: ");
for (int i = 0; i < 6; i++)
printf("%02X ", hex[i]);
printf("\n");
return 0;
}
```
上述示例中,`str2hex`函数接收一个字符串指针和一个无符号字符数组指针作为参数,将字符串转换为16进制数组。函数通过遍历字符串中的字符并将其转换为对应的16进制值来实现转换。最终的16进制数组存储在传递给函数的无符号字符数组中。
在示例程序的`main`函数中,我们将一个十六进制字符串传递给`str2hex`函数,并打印转换后的16进制数组。输出结果如下:
```
Hex array: 48 65 6C 6C 6F 20
```
阅读全文