C语言怎么把字符串转换成16进制数
时间: 2023-07-29 15:09:28 浏览: 143
在C语言中,可以使用 `sscanf` 函数将字符串转换为 16 进制数。例如:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *s = "hello";
int hex_num;
sscanf(s, "%x", &hex_num);
printf("%x\n", hex_num);
return 0;
}
```
输出结果为:
```
68656c6c
```
其中,`sscanf(s, "%x", &hex_num)` 将字符串 `s` 解析为一个 16 进制数,并将其存储在变量 `hex_num` 中。最后,使用 `%x` 格式化符号将 `hex_num` 输出为 16 进制数。需要注意的是,这种方法只能将字符串转换为整型的 16 进制数,如果要转换为浮点型的 16 进制数,可以使用 `strtod` 函数。
相关问题
用c语言将字符串转换成16进制数据
在C语言中,可以使用标准库函数`itoa()`或者`sprintf()`配合`%x`格式说明符将字符串转换为16进制表示。以下是两种方法:
1. 使用`itoa()`函数(仅适用于Windows平台):
```c
#include <windows.h>
#include <stdlib.h>
#include <string.h>
char hex_string[100]; // 存放结果的数组
void convert_to_hex(char *input, char *output) {
DWORD value = (DWORD)atoi(input); // 转换为无符号长整型
sprintf(output, "%X", value); // 使用%X格式转换为16进制
}
// 示例:
char str[] = "12345";
convert_to_hex(str, hex_string);
```
注意:`itoa()`函数不是C标准库的一部分,但在Windows平台上可用。
2. 使用`sprintf()`函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void convert_to_hex(char *input, char *output) {
unsigned long int num = strtoul(input, NULL, 10); // 将字符串转换为无符号长整数
sprintf(output, "%lx", num); // %lx用于无符号长整型的16进制表示
}
// 示例:
char str[] = "12345";
convert_to_hex(str, hex_string);
```
c语言统计字符串转换成十进制的整数
以下是C语言统计字符串转换成十进制的整数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
char str[100];
int len, i, decimal = 0, base = 1;
printf("请输入一个十六进制数:");
scanf("%s", str);
len = strlen(str);
for (i = len - 1; i >= 0; i--)
{
if (str[i] >= '0' && str[i] <= '9')
{
decimal += (str[i] - 48) * base;
base *= 16;
}
else if (str[i] >= 'A' && str[i] <= 'F')
{
decimal += (str[i] - 55) * base;
base *= 16;
}
else if (str[i] >= 'a' && str[i] <= 'f')
{
decimal += (str[i] - 87) * base;
base *= 16;
}
else
{
printf("输入的十六进制数不合法!\n");
return 0;
}
}
printf("转换后的十进制数为:%d\n", decimal);
return 0;
}
```
阅读全文
相关推荐














