我正在编写一个程序来将任何十进制数转换为十六进制,但我得到的结果总是以相反的顺序。我很困惑如何解决这个问题?
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 ???
感谢您的帮助。
答案 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
,否则输出对于大数字来说会很奇怪。