/*
十六 -> 1位十六进制变 4 位二进制 -> 3位二进制变 1 位八进制 (从后往前,前面不够3位就补零)
(5B89)16
= (0101 1011 1000 1001)2
= (000 101 101 110 001 001)2
= (055611)8
= (55611)8
*/
/*
1.把16进制字符串分割
2.把每位 16进制 转化成 2 进制
3.从后开始数,每 3 位 2进制组成一组,开头不够 3位的话可以补零
4.把每组 2进制转化为 8进制
*/
#include <iostream>
#include <string>
using namespace std;
string s16; //16进制
string s2; //2 进制
//string s8; //8 进制
void change16to2(char c) //把每位 16进制 转化成 2 进制
{
int tempNum, yuShu;
//把字符串转换成数字
if (c>='A') tempNum = c - 'A' + 10;
else tempNum = c - '0';
//cout<<num<<endl;
string tempS = ""; //tempS为每一组 2进制 字符串
char tempC;
while (tempNum!=0) //这里处理完的tempS是逆序的,还没完成
{
yuShu = tempNum % 2;
tempC = yuShu + 48;
tempS = tempS + tempC;
tem
十六进制转八进制(代码)
最新推荐文章于 2023-10-10 12:31:09 发布