前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BASIC-12 十六进制转八进制

BASIC-12 十六进制转八进制

作者头像
英雄爱吃土豆片
发布2021-12-07 17:11:10
3240
发布2021-12-07 17:11:10
举报

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T51

代码语言:javascript
复制
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
using namespace std;

const char HEX[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
const string hexBinary[16] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
const string octonaryBinary[8] = {"000", "001", "010", "011", "100", "101", "110", "111"};

string toString(int num) {
	string res = "";
	while (num > 0) {
		res += (num % 10) + '0';
		num /= 10;
	}
	reverse(res.begin(), res.end());
	return res;
}
string hexToBinary(string hex) {
	string res = "";
	for (int i = 0; i < hex.length(); i++) {
		for (int j = 0; j < 16; j++) {
			if (hex[i] == HEX[j]) {
				res += hexBinary[j];
				break;
			}
		}
	}
	return res;
}
string binaryToOctonary(string binary) {
	int len = binary.length();
	if (len % 3) {
		reverse(binary.begin(), binary.end());	
		for (int i = 0; i < 3 - (len % 3); i++) {
			binary += '0';
		}
		reverse(binary.begin(), binary.end());
	}
	string res = "";
	string son = "";
	int head = 0;
	for (int i = 0; i < binary.length() / 3; i++) {
		son = binary.substr(head, 3);
		for (int j = 0; j < 8; j++) {
			if (son == octonaryBinary[j]) {
				res += HEX[j];
				break;
			}
		}
		head += 3;
	}
	while (*res.begin() == '0') {
		res.erase(res.begin());
	}
	return res;
}
int main () {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		string hex;
		cin >> hex;
		cout << binaryToOctonary(hexToBinary(hex)) << "\n";
	}
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档