字符串buff[10]="3132333435"转化hex格式的buff2[5]= {0x31,0x32,0x33,0x34,0x35};使用C语言实现
时间: 2024-10-23 07:13:11 浏览: 21
hex2ascii_Hex2Char_十六进制转字符串_
在C语言中,你可以通过循环和位运算将字符串转换成十六进制格式的整数数组。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 将一个字符转换为对应的16进制值
unsigned char hex_char(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;
// 如果不是有效的十六进制字符,返回它本身作为错误处理
return c;
}
void str_to_hex(char *str, unsigned char buff[], int len) {
for (int i = 0; i < len; i++) {
buff[i] = hex_char(str[i]);
}
}
int main() {
char buff[11]; // 需多一个位置存储'\0'
strcpy(buff, "3132333435");
buff[len] = '\0'; // 添加字符串结束符
unsigned char buff2[5];
str_to_hex(buff, buff2, 5); // 我们只转换前5个字符(因为有长度限制)
printf("Hex format: ");
for (int i = 0; i < 5; i++) {
printf("%02X", buff2[i]); // 输出两位的16进制值,并自动填充前导零
}
return 0;
}
```
这个程序首先定义了一个`hex_char`函数用于单个字符转十六进制,然后`str_to_hex`函数遍历输入字符串并逐个字符转换。注意,`str_to_hex`会假设输入字符串已经是连续的数字序列。
运行此程序,你会得到类似这样的输出:
```
Hex format: 0x31 0x32 0x33 0x34 0x35
```
阅读全文