题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/0337e32b1e5543a19fa380e36d9343d7
#include <bits/stdc++.h> using namespace std; // 字符串除法,将十进制str转换为x进制 string Divide(string str, int x) { int reminder = 0; // 保留余数 for (int i = 0; i < str.size(); i++) { // 数字转为十进制数 int current = reminder * 10 + str[i] - '0'; // str取出x进制下一位数字 str[i] = current / x + '0'; // 得到一轮后x进制的余数 reminder = current % x; } int pos = 0; // 寻找首个非0的下标 while (pos < str.size() && str[pos] == '0') pos++; // 删去前面多余的0 return str.substr(pos); } int main() { string str; while (cin >> str) { vector<int> binary; while (str.size() != 0) { // str中取出数字最低位,把他变成对应二进制数 int last = str[str.size() - 1] - '0'; binary.push_back(last % 2); str = Divide(str, 2); } // 使用reverse方法直接逆序vector reverse(binary.begin(), binary.end()); // 输出该二进制数 for (int bit : binary) cout << bit; cout << endl; } return 0; }