#include<algorithm>#include<string>
std::string decimalToK(int num,int k){if(k <2|| k >16)return"Invalid";// 进制范围校验[7](@ref)if(num ==0)return"0";// 特殊值处理[3](@ref)constchar digits[]="0123456789ABCDEF";// 字符映射表[7](@ref)bool isNegative = num <0;
num =abs(num);
std::string result;while(num >0){int remainder = num % k;
result += digits[remainder];// 直接查表优化[7](@ref)
num /= k;}if(isNegative) result +='-';
std::reverse(result.begin(), result.end());// 倒序修正[2](@ref)return result;}#include<cctype>intbase_to_dec(const std::string& num,int base){if(base <2|| base >36)return-1;int result =0;for(char c : num){int value =isdigit(c)? c -'0':toupper(c)-'A'+10;if(value >= base)return-1;// 非法字符检测
result = result * base + value;}return result;}