C语言 函数实现16进制转10进制
时间: 2023-05-20 21:05:48 浏览: 1179
可以使用 strtol 函数将 16 进制字符串转换为 10 进制数。具体实现代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "1A";
long decimal = strtol(hex_str, NULL, 16);
printf("%ld\n", decimal);
return 0;
}
```
这个程序将输出 26,即 16 进制数 1A 对应的 10 进制数。
相关问题
linux c语言自己实现16进制转10进制
可以使用C语言中的 strtol 函数将16进制数转换为10进制数。示例代码如下:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_num[] = "0x3A";
int dec_num = strtol(hex_num, NULL, 16);
printf("16进制数 %s 转换为10进制数为 %d\n", hex_num, dec_num);
return 0;
}
```
输出结果为:
```
16进制数 0x3A 转换为10进制数为 58
```
希望能够帮到你。
用c语言函数实现10进制数向2、8、16进制数的转换
在C语言中,我们可以创建三个独立的函数分别用于将10进制整数转换为2、8和16进制数。这里是一个简单的示例:
1. **转二进制** (Base 2)
```c
#include <stdio.h>
#include <stdlib.h>
void decimalToBinary(int dec) {
unsigned int binary[32], i = 0;
while (dec > 0) {
binary[i] = dec % 2;
dec = dec / 2;
i++;
}
printf("Binary representation: ");
for (int j = i - 1; j >= 0; j--)
printf("%d", binary[j]);
}
```
2. **转八进制** (Base 8)
```c
void decimalToOctal(int dec) {
char octal[11];
int index = 0;
while (dec > 0) {
octal[index++] = dec % 8 + '0';
dec = dec / 8;
}
if(index == 0) {
printf("Octal representation: 0");
} else {
printf("Octal representation: ");
for (int i = index - 1; i >= 0; i--) {
printf("%c", octal[i]);
}
}
}
```
3. **转十六进制** (Base 16)
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void decimalToHexadecimal(int dec) {
char hex[17];
int i = 0;
while (dec > 0) {
hex[i++] = (dec % 16) + '0';
if (hex[i - 1] > '9') {
hex[i - 1]++;
}
if (hex[i - 1] > 'F') {
hex[i - 1] += 7;
}
dec = dec / 16;
}
if (i == 0) {
printf("Hexadecimal representation: 0");
} else {
printf("Hexadecimal representation: ");
for (int j = i - 1; j >= 0; j--) {
printf("%c", hex[j]);
}
}
}
// 示例调用
int main() {
int num = 12345;
printf("Decimal number: %d\n", num);
decimalToBinary(num);
decimalToOctal(num);
decimalToHexadecimal(num);
return 0;
}
```
每个函数会接受一个十进制整数作为输入,并返回相应的进制表示。
阅读全文