在计算机科学中,进制转换是一个基础且重要的概念。C语言作为一种广泛使用的编程语言,提供了多种方法来实现不同进制之间的转换。本文将详细介绍如何在C语言中实现二进制、八进制和十六进制之间的转换,并提供相应...
在计算机科学中,进制转换是一个基础且重要的概念。C语言作为一种广泛使用的编程语言,提供了多种方法来实现不同进制之间的转换。本文将详细介绍如何在C语言中实现二进制、八进制和十六进制之间的转换,并提供相应的代码示例。
十进制转二进制通常使用“除以2取余法”。以下是具体的步骤:
以下是一个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语言中轻松实现二进制、八进制和十六进制之间的转换。这些函数可以用于各种编程任务,例如数据存储、网络通信和算法实现。