我有这个代码:
char digits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B',
'C', 'D', 'E', 'F' };
string toFormatFromDecimal(long long t, Format format) {
int digitCount = ceil(log(t) / log((int) format));
string hex = "";
for (int i = 0; i < digitCount; i++) {
hex += digits[(int) (t%format)];
t = t/format;
}
return string(hex.rbegin(), hex.rend());
}
string toHexFromDecimal(long long t) {
return "0x" + toFormatFromDecimal(t, HEX);
}
string toBinFromDecimal(long long t) {
return toFormatFromDecimal(t, BIN);
}
这应该将 long long 转换为十六进制或二进制表示,这适用于所有正数,但不适用于负数。
有什么想法可以扩展我的代码以处理签名数字吗?谢谢弗洛里安
编辑:现在我在这里遇到了相反的问题(String -> long long)