十进制 转换 2-10 进制,int的扩展方法

public static int ConvertToBase(this int i, int baseToConvertTo)
        {
            if (baseToConvertTo < 2 || baseToConvertTo > 10)
            {
                throw new ArgumentException("无法完成转换" + baseToConvertTo.ToString());
            }
            int resault = 0;  //存放结果
            int iterations = 0;  //十进制位数(第一次循环为 个位,第二次,十位……)
            do
            {
                int nextDigit = i % baseToConvertTo;  //原整数模除进制,取余。
                i /= baseToConvertTo;  //原数除进制,准备取余继续除
                resault += nextDigit * (int)Math.Pow(10, iterations);  //将余数存放(按十进制位数存放)
                iterations++;
            } while (i != 0);
            return resault;
            
        }

 

转载于:https://www.cnblogs.com/3Tai/archive/2012/07/14/2591672.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是 C++ 代码实现: ```c++ #include <iostream> #include <string> #include <cmath> #include <sstream> using namespace std; // 将二进制字符串转换十进制数 double binaryToDecimal(string binary) { double decimal = 0; int length = binary.length(); for (int i = 0; i < length; i++) { if (binary[i] == '1') { decimal += pow(2, length - 1 - i); } } return decimal; } // 将十进制转换成二进制字符串 string decimalToBinary(double decimal) { int integerPart = (int)decimal; double fractionalPart = decimal - integerPart; string binary = ""; while (integerPart > 0) { binary = to_string(integerPart % 2) + binary; integerPart /= 2; } if (fractionalPart > 0) { binary += "."; for (int i = 0; i < 6; i++) { fractionalPart *= 2; binary += to_string((int)fractionalPart); fractionalPart -= (int)fractionalPart; } } return binary; } // 将十进制转换成八进制字符串 string decimalToOctal(double decimal) { int integerPart = (int)decimal; double fractionalPart = decimal - integerPart; string octal = ""; while (integerPart > 0) { octal = to_string(integerPart % 8) + octal; integerPart /= 8; } if (fractionalPart > 0) { octal += "."; for (int i = 0; i < 6; i++) { fractionalPart *= 8; octal += to_string((int)fractionalPart); fractionalPart -= (int)fractionalPart; } } return octal; } // 将十进制转换成十六进制字符串 string decimalToHex(double decimal) { int integerPart = (int)decimal; double fractionalPart = decimal - integerPart; string hex = ""; while (integerPart > 0) { int remainder = integerPart % 16; if (remainder < 10) { hex = to_string(remainder) + hex; } else { hex = (char)(remainder - 10 + 'A') + hex; } integerPart /= 16; } if (fractionalPart > 0) { hex += "."; for (int i = 0; i < 6; i++) { fractionalPart *= 16; int digit = (int)fractionalPart; if (digit < 10) { hex += to_string(digit); } else { hex += (char)(digit - 10 + 'A'); } fractionalPart -= digit; } } return hex; } int main() { int choice1, choice2; string input, output; double decimal; while (true) { cout << "一级菜单:" << endl; cout << "(1) 2进制转换" << endl; cout << "(2) 8进制转换" << endl; cout << "(3) 10进制转换" << endl; cout << "(4) 16进制转换" << endl; cout << "(0) 退出" << endl; cout << "请选择转换类型:"; cin >> choice1; if (choice1 == 0) { break; } else if (choice1 == 1) { cout << "二级菜单:" << endl; cout << "(1) 2进制数 ---> 8进制数" << endl; cout << "(2) 2进制数 ---> 10进制数" << endl; cout << "(3) 2进制数 ---> 16进制数" << endl; cout << "(0) 返回上级目录" << endl; cout << "请选择转换类型:"; cin >> choice2; if (choice2 == 0) { continue; } else if (choice2 == 1) { cout << "请输入二进制数:"; cin >> input; decimal = binaryToDecimal(input); output = decimalToOctal(decimal); cout << "转换结果为:" << output << endl; } else if (choice2 == 2) { cout << "请输入二进制数:"; cin >> input; decimal = binaryToDecimal(input); cout << "转换结果为:" << decimal << endl; } else if (choice2 == 3) { cout << "请输入二进制数:"; cin >> input; decimal = binaryToDecimal(input); output = decimalToHex(decimal); cout << "转换结果为:" << output << endl; } else { cout << "无效的选择!" << endl; } } else if (choice1 == 2) { // 与上面的代码类似,这里不再赘述 } else if (choice1 == 3) { // 与上面的代码类似,这里不再赘述 } else if (choice1 == 4) { // 与上面的代码类似,这里不再赘述 } else { cout << "无效的选择!" << endl; } } return 0; } ``` 这个程序实现了二进制、八进制十进制和十六进制之间的相互转换,包括小数。程序使用了两级菜单来方便用户选择转换类型,可以根据需要进行扩展

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值