首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]揭秘C语言进制转换技巧:轻松掌握二、八、十六进制转换之道

发布于 2025-07-12 23:30:38
0
1465

在计算机科学中,进制转换是一个基础且重要的概念。C语言作为一种广泛使用的编程语言,提供了多种方法来实现不同进制之间的转换。本文将详细介绍如何在C语言中实现二进制、八进制和十六进制之间的转换,并提供相应...

在计算机科学中,进制转换是一个基础且重要的概念。C语言作为一种广泛使用的编程语言,提供了多种方法来实现不同进制之间的转换。本文将详细介绍如何在C语言中实现二进制、八进制和十六进制之间的转换,并提供相应的代码示例。

二进制与十进制转换

十进制转二进制

十进制转二进制通常使用“除以2取余法”。以下是具体的步骤:

  1. 将十进制数除以2。
  2. 记录余数(0或1)。
  3. 将商再次除以2,并记录余数。
  4. 重复步骤2和3,直到商为0。
  5. 将所有记录的余数倒序排列,即为二进制表示。

以下是一个C语言函数,用于将十进制数转换为二进制字符串:

#include 
#include 
void decimalToBinary(int n, char *binaryStr) { int index = 0; while (n > 0) { binaryStr[index++] = (n % 2) + '0'; n = n / 2; } binaryStr[index] = '\0'; reverseString(binaryStr);
}
void reverseString(char *str) { int length = strlen(str); for (int i = 0; i < length / 2; i++) { char temp = str[i]; str[i] = str[length - 1 - i]; str[length - 1 - i] = temp; }
}
int main() { int decimalNumber = 168; char binaryStr[32]; decimalToBinary(decimalNumber, binaryStr); printf("Decimal: %d, Binary: %s\n", decimalNumber, binaryStr); return 0;
}

二进制转十进制

二进制转十进制相对简单,只需要将每一位乘以其对应的2的幂次方,然后将结果相加。

以下是一个C语言函数,用于将二进制字符串转换为十进制数:

#include 
#include 
int binaryToDecimal(char *binaryStr) { int decimalNumber = 0; int length = strlen(binaryStr); for (int i = 0; i < length; i++) { decimalNumber += (binaryStr[i] - '0') * (1 << (length - 1 - i)); } return decimalNumber;
}
int main() { char binaryStr[] = "10101000"; int decimalNumber = binaryToDecimal(binaryStr); printf("Binary: %s, Decimal: %d\n", binaryStr, decimalNumber); return 0;
}

八进制与十进制转换

十进制转八进制

十进制转八进制的方法与十进制转二进制类似,只是除以的基数是8。

以下是一个C语言函数,用于将十进制数转换为八进制字符串:

#include 
#include 
void decimalToOctal(int n, char *octalStr) { int index = 0; while (n > 0) { octalStr[index++] = (n % 8) + '0'; n = n / 8; } octalStr[index] = '\0'; reverseString(octalStr);
}
int main() { int decimalNumber = 100; char octalStr[32]; decimalToOctal(decimalNumber, octalStr); printf("Decimal: %d, Octal: %s\n", decimalNumber, octalStr); return 0;
}

八进制转十进制

八进制转十进制的方法与二进制转十进制类似,只是乘以的基数是8。

以下是一个C语言函数,用于将八进制字符串转换为十进制数:

#include 
#include 
int octalToDecimal(char *octalStr) { int decimalNumber = 0; int length = strlen(octalStr); for (int i = 0; i < length; i++) { decimalNumber += (octalStr[i] - '0') * (1 << (length - 1 - i)); } return decimalNumber;
}
int main() { char octalStr[] = "144"; int decimalNumber = octalToDecimal(octalStr); printf("Octal: %s, Decimal: %d\n", octalStr, decimalNumber); return 0;
}

十六进制与十进制转换

十六进制转十进制

十六进制转十进制的方法与二进制转十进制类似,只是乘以的基数是16。

以下是一个C语言函数,用于将十六进制字符串转换为十进制数:

#include 
#include 
int hexToDecimal(char *hexStr) { int decimalNumber = 0; int length = strlen(hexStr); for (int i = 0; i < length; i++) { if (hexStr[i] >= '0' && hexStr[i] <= '9') { decimalNumber += (hexStr[i] - '0') * (1 << (length - 1 - i) * 4); } else if (hexStr[i] >= 'A' && hexStr[i] <= 'F') { decimalNumber += (hexStr[i] - 'A' + 10) * (1 << (length - 1 - i) * 4); } } return decimalNumber;
}
int main() { char hexStr[] = "1A7"; int decimalNumber = hexToDecimal(hexStr); printf("Hexadecimal: %s, Decimal: %d\n", hexStr, decimalNumber); return 0;
}

十进制转十六进制

十进制转十六进制的方法与十进制转二进制类似,只是除以的基数是16。

以下是一个C语言函数,用于将十进制数转换为十六进制字符串:

#include 
#include 
void decimalToHexadecimal(int n, char *hexStr) { int index = 0; while (n > 0) { int remainder = n % 16; if (remainder < 10) { hexStr[index++] = remainder + '0'; } else { hexStr[index++] = remainder - 10 + 'A'; } n = n / 16; } hexStr[index] = '\0'; reverseString(hexStr);
}
int main() { int decimalNumber = 423; char hexStr[32]; decimalToHexadecimal(decimalNumber, hexStr); printf("Decimal: %d, Hexadecimal: %s\n", decimalNumber, hexStr); return 0;
}

通过以上方法,您可以在C语言中轻松实现二进制、八进制和十六进制之间的转换。这些函数可以用于各种编程任务,例如数据存储、网络通信和算法实现。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流