十进制转十六进制函数在 C 语言中的实现399


在计算机科学中,进制转换是一种将数字从一种基数转换为另一种基数的过程。在 C 语言中,存在十进制转十六进制的函数,它提供了将十进制整数转换为等价十六进制表示的方法。

十进制转十六进制函数的原型为:```c
int itoa(int num, char *str, int base);
```

其中:* `num`:要转换的十进制整数
* `str`:指向存储转换后结果字符串的数组
* `base`:转换的基数(在本例中为 16)

该函数的工作原理如下:1. 将十进制整数 `num` 转换成等价的二进制数字。
2. 将二进制数字按四位一组分割,并将其表示为十六进制数字。
3. 将十六进制数字存储在字符串 `str` 中。

以下是十进制转十六进制函数的示例实现:```c
#include
int itoa(int num, char *str, int base) {
char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int i = 0;
if (num == 0) {
str[i++] = '0';
str[i] = '\0';
return i;
}
while (num != 0) {
int rem = num % base;
str[i++] = hex[rem];
num = num / base;
}
str[i] = '\0';
// 由于十六进制数字是从右到左存储的,需要反转字符串
int start = 0;
int end = i - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return i;
}
int main() {
int num = 12345;
char str[100];
int len = itoa(num, str, 16);
printf("十进制 %d 的十六进制表示:%s", num, str);
return 0;
}
```

输出:```
十进制 12345 的十六进制表示:3039
```

在这个示例中,十进制整数 `12345` 被转换为十六进制表示为 `3039`。

2024-12-02


上一篇:随机数生成:C 语言程序中的五个随机数

下一篇:C 语言求平均值的函数