* 因为没有实质运用C++的OOP面向对象编程的思想,虽使用的部分C++语法,但程序本质还是C语言:
在C中我们可以很简单的实现十进制到十六进制与八进制之间的转换(%x/%X、%o),
但是却没有直接的方法直接将十进制转换为二进制,这就需要我们自己编写相应的功能函数去实现转化;
本篇文章将介绍两种转化方法:
1> 短除法(正存逆读)
2> 转换为八进制,然后使用二进制数据对点替换八进制数据
****************************************************************************************************************************************
★首先给出源代码:
# include <iostream>
# include <windows.h>
using namespace std;
void Binary_1(int number)
{
int i=0,a[32];
while(number>0)
{
a[i] = number % 2;
i++;
number = number / 2;
}
cout<< "转换为二进制:";
for(i--;i>=0;i--)
{
cout << a[i];
}
}
void Binary_2(int number)
{
string octonary[8] = {"000","001","010","011","100","101","110","111"};
char a[22]; //存储八进制数据
string bin;
sprintf(a,"%o",number);
for(int i = 0;a[i];i++)
{
bin+=octonary[a[i]-'0'];
}
cout<< "转换为二进制:";
cout << bin;
}
int main()
{
int n;
system("title 十进制转二进制");
cout << "输入十进制数 : " ;
cin >> n;
Binary_1(n);
cout << endl;
Binary_2(n);
return 0;
}
程序分析:
*octonary 八进制的、八进制
*binary 二进制的、二进制
• sprintf()的使用:
• sprintf(*buffer , 格式 , 值) //把格式化的数据写入某个字符串缓冲区, 如果字符缓冲区过大则返回值+1 (确定长度不可靠)
• snprintf(*buffer , 需要读取的字符个数 , 格式 , 值) //指定需要读取的字符个数
Binary_1 : 以整型数组存储每一个0/1数据
Binary_2 : 以字符串的形式存储
****************************************************************************************************************************************
最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。
****************************************************************************************************************************************