今天为了完成老师布置的一个CRC(循环冗余校检)的编码作业,其中有一个子程序是要从十进制转成二进制字符串显示!不做不知道~~~做起来竟然调试得我没有脾气~~!!想不到以为很简单,竟然是要考虑很多东西的哦呵~~~差点受打击了~~~(因为方便的原因用上到MFC里的CString类)
//十进制转二进制
void CCRC::DecToBinary( CString & ChangeString )
{
//先将字符串型的数转为长整型整数
unsigned long num = atol(ChangeString.GetBuffer(ChangeString.GetLength()));
unsigned long temp = 1;
int k = 0;
//求出最大不超过当前数的2次幂,设置字符串长度
while ( temp < num )
{
k++;
temp*=2;
}
//重新设置字符串长度
ChangeString.GetBufferSetLength(k);
ChangeString.SetAt(0,'1');
temp /= 2;
num -= temp;
k = 1;
//当转换数大于0,找出一个不大于num的2次幂数,
while( num >= 0 && temp !=