c++ - 十进制到十六进制的转换程序不起作用??不知道为什么?
问题描述
下面是十进制到十六进制转换的c++程序!!
// decimal to hexadecimal conversion
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
string d2h(int n) {
string s, t;
int i = 0;
while (n >= 1) {
t[i] = n % 16;
switch (t[i]) {
case 10:
t[i] = 'A';
break;
case 11:
t[i] = 'B';
break;
case 12:
t[i] = 'C';
break;
case 13:
t[i] = 'D';
break;
case 14:
t[i] = 'E';
break;
case 15:
t[i] = 'F';
break;
default:
break;
}
s[i] = t[i];
n /= 16;
i++;
}
return s;
}
int main() {
int n;
cin >> n;
cout << d2h(n);
return 0;
}
我没有得到任何输出!
PS C:\Users\anmol\Desktop\c++projectwork> g++ .\dec2hexadec.cpp
PS C:\Users\anmol\Desktop\c++projectwork> ./a
479
PS C:\Users\anmol\Desktop\c++projectwork>
我应该改变什么??
解决方案
您没有在内存中
s
或t
为内存分配空间。使用s.push_back()
而不是s[i]
.您可能还需要反转字符串。
t[i] = n % 16;
这不分配字符'0'
,而是分配数字0
。为什么不在你的 switch 语句中创建 16 个案例?或者使用 ASCII 怪癖'0' + (n % 16)
。
推荐阅读
- c++ - Boost.Spirit.X3 中的船长
- python - 为什么它显示有关变量定义的错误?
- algorithm - 有哪些算法和数据结构可以有效地描述和操纵超像素和图像片段的边界?
- mongoose - 从数据库中检索到的文档的猫鼬验证
- android - 同一个函数在两个不同的活动中被调用两次
- javascript - 迭代过程的嵌套过滤 - 指数映射?
- php - 在 stderr 中发送的 FastCGI:“PHP 消息:PHP 警告:mkdir():只读文件系统
- assembly - 如何在 SMS32v50 汇编中将 BYTE 寄存器的值拆分为两个半字节?
- javascript - 数组数组包含数组 javascript
- swift - 如何使用 ForEach 符合协议'Hashable'