用c语言把16进制转为10进制
时间: 2023-11-02 19:06:35 浏览: 46
可以使用C语言中的标准库函数`strtol()`,示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "1A"; // 16进制字符串
long decimal = strtol(hex_str, NULL, 16); // 将16进制字符串转为10进制数值
printf("%s in hexadecimal is %ld in decimal.\n", hex_str, decimal); // 输出结果
return 0;
}
```
上述代码中,`strtol()`函数的第一个参数是需要转换的16进制字符串,第二个参数是用于存储无法转换的字符的指针(可以设为`NULL`),第三个参数是指定转换的进制,这里设为16。转换后的数值存储在`decimal`变量中,可以直接输出。
相关问题
51单片机用c语言把16进制转为10进制
以下是51单片机用C语言将16进制转换为10进制的代码示例:
```c
#include <reg51.h>
unsigned char hex_to_decimal(unsigned char hex_value)
{
unsigned char decimal_value = 0;
if (hex_value >= '0' && hex_value <= '9')
{
decimal_value = hex_value - '0';
}
else if (hex_value >= 'A' && hex_value <= 'F')
{
decimal_value = hex_value - 'A' + 10;
}
else if (hex_value >= 'a' && hex_value <= 'f')
{
decimal_value = hex_value - 'a' + 10;
}
return decimal_value;
}
unsigned int hex_string_to_decimal(char* hex_string)
{
unsigned int decimal_value = 0;
int i = 0;
while (hex_string[i] != '\0')
{
decimal_value = decimal_value * 16 + hex_to_decimal(hex_string[i]);
i++;
}
return decimal_value;
}
void main()
{
char* hex_string = "3A7F";
unsigned int decimal_value = hex_string_to_decimal(hex_string);
// 将十进制值输出到串口或LED等
}
```
在上面的代码中,`hex_to_decimal`函数将一个16进制字符转换为10进制值。`hex_string_to_decimal`函数将一个16进制字符串转换为10进制值。这些函数可以用于将16进制数据转换为10进制值,然后可以将结果输出到串口或LED等设备。
用c语言将10进制转为16进制
可以使用 sprintf 函数将一个十进制数转换为十六进制字符串:
```c
#include <stdio.h>
int main() {
int n = 12345;
char hex[64];
sprintf(hex, "%x", n);
printf("%s\n", hex);
return 0;
}
```
这段代码将输出:
```
3039
```