这个字符串发生了什么?它不应该一直都在工作吗?为了正常工作,我必须给他一个价值(例如result = "ManyLetters"
)。但是当我说清楚时,我就没有看到正确的价值。当我给字符串一个字母少于Hex包含的字符时,不会出现所有的十六进制。
string changeDectoHex(int Dec){
string result = "";
int modulo = 0;
for (int i = 0; Dec != 0; i++){
modulo = Dec % 16;
Dec = (Dec - modulo)/16;
if (modulo == 0) result[i] = '0';
else if (modulo == 1) result[i] = '1';
else if (modulo == 2) result[i] = '2';
else if (modulo == 3) result[i] = '3';
else if (modulo == 4) result[i] = '4';
else if (modulo == 5) result[i] = '5';
else if (modulo == 6) result[i] = '6';
else if (modulo == 7) result[i] = '7';
else if (modulo == 8) result[i] = '8';
else if (modulo == 9) result[i] = '9';
else if (modulo == 10) result[i] = 'A';
else if (modulo == 11) result[i] = 'B';
else if (modulo == 12) result[i] = 'C';
else if (modulo == 13) result[i] = 'D';
else if (modulo == 14) result[i] = 'E';
else if (modulo == 15) result[i] = 'F';
}
reverse(result.begin(), result.end());
return result;
}
答案 0 :(得分:2)
您无法访问超出范围的元素(您的字符串长度为零),只需使用:
result += '1';
等。 您可以使用另一个字符串,以避免级联if / else:
result += "0123456789ABCDEF"[modulo];
答案 1 :(得分:0)
使用push_back
而不是尝试分配给result[i]
。如果你想加快速度,你可以reserve
达到预期的预期金额。