将十进制数转换为十六进制是否按相反顺序打印?

时间:2017-04-21 04:08:00

标签: c recursion hex

我正在编写一个程序来将任何十进制数转换为十六进制,但我得到的结果总是以相反的顺序。我很困惑如何解决这个问题?

public class MyClass {

  var center: NotificationCenter

  public init() {
    center = NotificationCenter.default
  }

  public run() {
    center.addObserver(self, selector: #selector(test), name: .UIKeyboardDidShow, object: nil)
  }

  func test() {
    Print("TESTED!")
  }
}

666输出 A92 而非 29A ???

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

因为您的程序在递归调用之前打印。要修复,只需在if语句后移动printHex(i/16)

void printHex(int i){
    if(i == 0){
        return;
    }
    printHex(i/16);

    int rem = i % 16;
    switch(rem) {
        case 10: cout << "A"; break;
        case 11: cout << "B"; break;
        case 12: cout << "C"; break;
        case 13: cout << "D"; break;
        case 14: cout << "E"; break;
        case 15: cout << "F"; break;
        default: cout << rem; break;
    }

}

答案 1 :(得分:0)

您可以写下:

,而不是切换块
std::cout << "0123456789ABCDEF"[i % 16];

当您致电printHex(0)时,输出应为&#34; 0&#34;。目前它什么都没有。

使用int代替unsigned int,否则输出对于大数字来说会很奇怪。