C语言将字符串转为16进制
时间: 2023-09-15 20:21:00 浏览: 190
在C语言中,可以使用sprintf函数将字符串转换为16进制的形式。下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello World";
int len = strlen(str);
char hex[len * 2 + 1];
memset(hex, 0, sizeof(hex));
for (int i = 0; i < len; i++) {
sprintf(hex + i * 2, "%02x", str[i]);
}
printf("%s in hex is %s\n", str, hex);
return 0;
}
```
在这个例子中,我们首先定义一个字符串`str`,然后使用`strlen`函数获取字符串的长度。接着,我们定义一个`hex`数组,它的长度是字符串长度的两倍再加上1,因为每个字符需要转换成两个16进制数字,加上最后的空字符。然后,我们使用`memset`函数将`hex`数组全部初始化为0。接下来,我们使用一个循环将每个字符转换成16进制数字,并将结果存储在`hex`数组中。最后,我们使用`printf`函数输出结果。
运行结果如下:
```
Hello World in hex is 48656c6c6f20576f726c64
```
可以看到,字符串`Hello World`被成功转换成了16进制的形式。
相关问题
C语言将16进制字符串转为16进制数组
可以使用sscanf()函数将16进制字符串转换为16进制数。然后将16进制数存储在数组中。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char hex_string[] = "0a1b2c3d";
int hex_array[4];
int i;
for(i = 0; i < 4; i++)
{
sscanf(hex_string + i*2, "%2x", &hex_array[i]);
}
for(i = 0; i < 4; i++)
{
printf("%02x ", hex_array[i]);
}
return 0;
}
```
输出将是:0a 1b 2c 3d。
在这个例子中,我们首先定义一个16进制字符串“0a1b2c3d”和一个整数数组hex_array。然后在循环中,我们使用sscanf()函数将每个16进制数提取到hex_array中。最后,我们遍历hex_array并使用printf()函数打印每个16进制数。
C语言字符串转为16进制uint8_t数组
下面是一个示例代码,将字符串转换为16进制uint8_t数组:
```c
#include <stdio.h>
#include <stdint.h>
#include <string.h>
int main() {
char str[] = "Hello World";
uint8_t hex_array[strlen(str)/2 + 1];
int i, j;
for (i = 0, j = 0; i < strlen(str); i += 2, j++) {
sscanf(&str[i], "%02x", &hex_array[j]);
}
hex_array[j] = '\0';
printf("Original string: %s\n", str);
printf("Hex array: ");
for (i = 0; i < strlen(str)/2; i++) {
printf("%02x ", hex_array[i]);
}
printf("\n");
return 0;
}
```
在上面的示例中,我们首先声明了一个字符串变量 `str`,然后声明一个 uint8_t 类型的数组 `hex_array`,用于存储转换后的16进制值。然后我们使用 `sscanf` 函数将字符串中每两个字符转换为一个16进制数,并存储到 `hex_array` 数组中。最后,我们打印了原始字符串和转换后的16进制数组。
需要注意的是,如果字符串的长度为奇数,则我们将忽略最后一个字符。
阅读全文