首页 > 解决方案 > 十进制到十六进制的转换程序不起作用??不知道为什么?

问题描述

下面是十进制到十六进制转换的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>

我应该改变什么??

标签: c++visual-studio

解决方案


  1. 您没有在内存中st为内存分配空间。使用s.push_back()而不是s[i].

  2. 您可能还需要反转字符串。

  3. t[i] = n % 16;这不分配字符'0',而是分配数字0。为什么不在你的 switch 语句中创建 16 个案例?或者使用 ASCII 怪癖'0' + (n % 16)


推荐阅读