看某华为面试题目有感,十六进制转换为二进制很简单,同理八进制,四进制转换为二进制亦很简单。
参考网上代码,二进制转换为十进制亦很简单,不过这想法真的是很巧妙,学习到了。
//十六进制转换为二进制 string HexToBin(string& str) { string res; size_t i, len = str.length(); if (len <= 0) return res; for (i = 0; i < len; i++) { if (str[i] == '0') res += "0000"; else if (str[i] == '1') res += "0001"; else if (str[i] == '1') res += "0001"; else if (str[i] == '2') res += "0010"; else if (str[i] == '3') res += "0011"; else if (str[i] == '4') res += "0100"; else if (str[i] == '5') res += "0101"; else if (str[i] == '6') res += "0110"; else if (str[i] == '7') res += "0111"; else if (str[i] == '8') res += "1000"; else if (str[i] == '9') res += "1001"; else if (str[i] == 'a') res += "1010"; else if (str[i] == 'b') res += "1011"; else if (str[i] == 'c') res += "1100"; else if (str[i] == 'd') res += "1101"; else if (str[i] == 'e') res += "1110"; else if (str[i] == 'f') res += "1111"; else { cout << "--ERROR--" << endl; break; } } return res; } //进制转换中间变量 struct TBigInt { int len; char value[10000]; TBigInt() :len(0) { for (size_t i = 0; i < 10000; i++) value[i] = 0; } }; void AddBit(TBigInt& data, char BitVal) { size_t i = 0, len = data.len; for (i = 0; i < len; i++) { data.value[i] *= 2; } data.value[0] += BitVal; for (i = 0; i < len; i++) { data.value[i + 1] += data.value[i] / 10; data.value[i] %= 10; } if (data.value[data.len]) ++data.len; } string OutputIntStr(TBigInt& data) { int i; string res; if (0 == data.len) { res.push_back('