实现string toHex(int)把一个十进制转换成十六进制。(完全用算法实现)

题目很简单,就是用十进制数不停的除以16,将所有的余数累加起来便是结果。我用C++简单的实现了一下,下面是代码(VC++.NET/windows xp): #include #include using namespace std; string ToHex(int dec) { unsigned int udec = (dec>=0)?(dec):(-dec), yushu; int pos = 8; char Hex[11]; memset(Hex, '0', 9); Hex[9] = 'H'; Hex[10] = '/0'; do//求余数 { yushu = udec%16; Hex[pos--] = (yushu>9)?(yushu+55):(yushu+48); udec = udec/16; } while (udec!=0); if (Hex[pos+1]>64)//如果最高位是字母,则字符串前面补0 Hex[pos] = '0'; else ++pos; if (dec<0)//如果是负数,在前面加负号 Hex[--pos] = '-'; return (string(Hex+pos)); } int _tmain(int argc, _TCHAR* argv[]) { int i; cin>>i; string sHex = ToHex(i); cout< <
模块化程序设计是一种将复杂系统分解多个简单模块的方法,每个模块负责实现特定功能的技术。在进行进制转换的程序设计中,我们可以将整个过程分为几个模块:输入模块、转换模块和输出模块。 首先,输入模块负责接收用户输入的进制正整数。然后,转换模块根据用户指定的目标进制进行转换。转换模块可以进一步细分为三个子模块,分别用于转换到二进制、八进制和十六进制。最后,输出模块将转换结果显示给用户。 以C语言为例,下面是一个简单的代码框架,展示了如何实现这样的模块化程序设计: ```c #include <stdio.h> // 函数声明 void ConvertToBinary(unsigned int n); void ConvertToOctal(unsigned int n); void ConvertToHexadecimal(unsigned int n); unsigned int ConvertFromBinary(const char *binaryString); unsigned int ConvertFromOctal(const char *octalString); unsigned int ConvertFromHexadecimal(const char *hexString); int main() { unsigned int number; int targetBase; // 输入模块 printf("请输入一个进制正整数: "); scanf("%u", &number); printf("请输入目标进制(2, 8, 16): "); scanf("%d", &targetBase); // 转换模块 switch (targetBase) { case 2: ConvertToBinary(number); break; case 8: ConvertToOctal(number); break; case 16: ConvertToHexadecimal(number); break; default: printf("无效的目标进制。\n"); break; } return 0; } // 转换到二进制并输出 void ConvertToBinary(unsigned int n) { // 实现转换到二进制的代码 } // 转换到八进制并输出 void ConvertToOctal(unsigned int n) { // 实现转换到八进制的代码 } // 转换到十六进制并输出 void ConvertToHexadecimal(unsigned int n) { // 实现转换到十六进制的代码 } // 其他相关的转换函数,例如从二进制字符串转换回进制 ``` 在上述代码中,我们定义了输入模块和转换模块的框架,具体实现每个转换函数需要编写相应的算法。例如,将进制数转换为二进制可以通过不断地除以2并取余数的方式来实现,余数逆序排列即为二进制形式。 对于相反的转换,即从二进制、八进制、十六进制字符串转换回进制,可以通过将每个位置的数字乘以其权重(基数的幂)然后求和的方式来实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值