题解 | #缩短二进制#-自己用C++实现进制转换

缩短二进制

https://www.nowcoder.com/practice/4ffcc9f206b949ddb057ee0099b34d51

用C++代码自己实现了一遍,看了题解,啊这么简单。不过锻炼一下进制转换的代码:

#include <iostream>
#include <vector>
using namespace std;

vector<char> dec2hex(int dec)
{
  vector<char> a;
  vector<char> b;

  char temp;
  int re = dec % 16;
  while (re != 0)
  {

    temp = (re >= 0 && re <= 9) ? ((char)(re + 48)) : ((char)(re + 55));
    a.push_back(temp);
    dec = dec / 16;
    re = dec % 16;
  }
  int n = a.size();
  int i = n - 1;
  while (i >= 0)
  {
    if (((n - i - 1) == 0) && (a[i] == '0'))
    {
      --i;
      continue;
    }
    b.push_back(a[i]);
    --i;
  }
  return b;
}

vector<char> dec2oct(int dec)
{
  vector<char> a;
  vector<char> b;

  char temp;
  int re = dec % 8;
  while (re != 0)
  {

    temp = (char)(re + 48);
    a.push_back(temp);
    dec = dec / 8;
    re = dec % 8;
  }
  int n = a.size();
  int i = n - 1;
  while (i >= 0)
  {
    if (((n - i - 1) == 0) && (a[i] == '0'))
    {
      --i;
      continue;
    }
    b.push_back(a[i]);
    --i;
  }
  return b;
}

int main()
{
  int a = 1234;
  vector<char> a_hex = dec2hex(a);
  vector<char> a_oct = dec2oct(a);
  cout << "0";
  for (auto c : a_oct)
    cout << c;
  cout << " 0X";
  for (auto c : a_hex)
    cout << c;
}

题解的核心:

  1. printf("%#o %#X\n", val, val);

  2. cout.setf(ios::showbase | ios::uppercase);

    cout << oct << val << " " << hex << val << endl;

    alt

C++题解 文章被收录于专栏

记录在牛客网用C++刷题的题解思路

全部评论

相关推荐

07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务