C 语言:将 16 进制数转换为 10 进制数306


在计算机编程中,经常需要将 16 进制数转换为 10 进制数。C 语言提供了多种方法来执行此转换,包括使用内置函数 strtol()、手动转换以及使用位移操作。

使用 strtol() 函数

strtol() 函数将字符串表示的数字转换为长整型。它可以接受一个 16 进制表示的字符串,并将其转换为等效的 10 进制值。语法如下:long strtol(const char *str, char endptr, int base);

* str:要转换的字符串。
* endptr:一个指向字符串中未处理部分的指针。如果函数成功,此指针将指向第一个无法转换的字符。
* base:要使用的进制(对于 16 进制,为 16)。

以下代码示例演示了如何使用 strtol() 函数将 16 进制字符串转换为 10 进制数:#include
int main() {
char str[] = "1F";
char *endptr;
long decimal = strtol(str, &endptr, 16);
printf("16进制数 %s 转换为 10 进制数为 %ld", str, decimal);
return 0;
}

输出:
16进制数 1F 转换为 10 进制数为 31

手动转换

也可以手动将 16 进制数转换为 10 进制数。这涉及将每个 16 进制数字乘以其对应的权重,然后将结果相加。权重是 16 的幂,从右到左递增。例如,16 进制数 1F 的手动转换如下:* 1 乘以 160 = 1
* F 乘以 161 = 240

相加后得到 10 进制数 31。

使用位移操作

最后,可以使用位移操作将 16 进制数转换为 10 进制数。这涉及将每个 16 进制数字左移 4 位,然后将其与先前结果相加。以下代码示例演示了此方法:int hex_to_decimal(char hex) {
int decimal = 0;
if (hex >= '0' && hex = 'A' && hex = 'a' && hex

2024-12-02


上一篇:如何在 C 语言中输出带颜色的文本(例如红色 X)

下一篇:C语言函数返回值的机制