用C++实现十进制到十六进制的两种转换方法
来源:互联网 发布:网络教育学费多少 编辑:程序博客网 时间:2024/05/24 04:30
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
string itos(int n)
{
ostringstream o;
o << n;
return o.str();
}
string ctos(char n)
{
ostringstream o;
o << n;
return o.str();
}
//采用移位运算,每四位转换为一个十六进制数
void invert_1(vector<string> &v1, int n)
{
int bytenum = sizeof(int);
int m = 0;
for(int i = 2*bytenum-1; i!=-1; --i)
{
m = n;
m = (m >> i*4) & ~(~0 << 4);
if(m>=0 && m<=9)
v1.push_back(itos(m));
else
v1.push_back(ctos(char(m+55)));
}
}
//用16去除输入的十进制数
void invert_2(vector<string> &v2, int n)
{
int shang = 0; //商
int yushu = 0; //余数
int value = 1; //权值
while(value <= n)
{
value = value * 16;
yushu = n % value;
shang = yushu * 16 / value;
if(shang>=0 && shang<=9)
v2.push_back(itos(shang));
else
v2.push_back(ctos(char(shang+55)));
}
reverse(v2.begin(),v2.end()); //将向量中的元素倒置
}
void print(vector<string> &v)
{
bool first = true; //判断0要不要输出
cout << "the result is: ";
for(vector<string>::size_type it = 0; it != v.size(); ++it)
{
if(v[it]=="0" && first == true)
continue;
else
first = false;
if(first == false)
cout << v[it];
}
cout << endl;
}
int main()
{
vector<string> v1;
vector<string> v2;
int input = 0;
cout << "please input a decimal data: ";
cin >> input;
invert_1(v1,input);
invert_2(v2,input);
print(v1);
print(v2);
return 0;
}
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
string itos(int n)
{
ostringstream o;
o << n;
return o.str();
}
string ctos(char n)
{
ostringstream o;
o << n;
return o.str();
}
//采用移位运算,每四位转换为一个十六进制数
void invert_1(vector<string> &v1, int n)
{
int bytenum = sizeof(int);
int m = 0;
for(int i = 2*bytenum-1; i!=-1; --i)
{
m = n;
m = (m >> i*4) & ~(~0 << 4);
if(m>=0 && m<=9)
v1.push_back(itos(m));
else
v1.push_back(ctos(char(m+55)));
}
}
//用16去除输入的十进制数
void invert_2(vector<string> &v2, int n)
{
int shang = 0; //商
int yushu = 0; //余数
int value = 1; //权值
while(value <= n)
{
value = value * 16;
yushu = n % value;
shang = yushu * 16 / value;
if(shang>=0 && shang<=9)
v2.push_back(itos(shang));
else
v2.push_back(ctos(char(shang+55)));
}
reverse(v2.begin(),v2.end()); //将向量中的元素倒置
}
void print(vector<string> &v)
{
bool first = true; //判断0要不要输出
cout << "the result is: ";
for(vector<string>::size_type it = 0; it != v.size(); ++it)
{
if(v[it]=="0" && first == true)
continue;
else
first = false;
if(first == false)
cout << v[it];
}
cout << endl;
}
int main()
{
vector<string> v1;
vector<string> v2;
int input = 0;
cout << "please input a decimal data: ";
cin >> input;
invert_1(v1,input);
invert_2(v2,input);
print(v1);
print(v2);
return 0;
}
- 用C++实现十进制到十六进制的两种转换方法
- c语言编程实现十进制到十六进制的转换
- 用递归实现十进制到十六进制的转换
- c指针解决十六进制到十进制的转换
- 汇编->十进制到十六进制数转换的程序实现
- 十六进制到十进制转换
- 十进制到十六进制转换
- 汇编---十进制到十六进制的转换
- [C#] 十六进制 与 十进制 的互相转换
- 十进制数向十六进制数转换的三种方法
- 用C#实现的十进制和十六进制的转换函数
- 十六进制转换成十进制的方法
- 用js实现颜色编码十六进制和十进制的转换
- 十六进制、十进制的转换
- 日期到十进制十六进制转换
- 十进制转十六进制的C语言实现
- 十进制转十六进制的C实现
- 用C语言,如何写十进制转换十六进制的程序,要注意十六进制有ABCDEF。
- 程序员的十层楼
- 沟通技巧(节选自微软IE推广)
- Java异常处理
- VC6.0连接PostgreSQL9.2
- ASP.NET个人总结一
- 用C++实现十进制到十六进制的两种转换方法
- [java] difference between Abstract Classes of Interface
- Set up JBPM5.4 Final Installer to use MS SQL Server 2008 using JTDS
- 2012年下半年考试系统维护总结
- 初学Qt之--Qt程序中文乱码的暂时解决办法
- IOS之UISegmentedControl
- C语言实现的工资管理系统
- Ubuntu 12.04安装英汉词典
- Linux内核Makefile浅析