十进制数转二进制字符串

    今天为了完成老师布置的一个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 != 0)
 {
  temp /= 2;    //这一句非常重要
  while( num < temp )
  {

    //当temp小于num时,置0
   ChangeString.SetAt(k++,’0′);
   temp /= 2;
  }
  

    //这个条件是处理最后一位时用到的
  if ( num != 0)
   ChangeString.SetAt(k++,’1′);
  num -= temp;
 
 }

}

    原文作者:进制转换
    原文地址: https://blog.csdn.net/kikikind/article/details/669506
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞