mantian

统计

留言簿(2)

阅读排行榜

评论排行榜

编写函数--整数转换为2进制字符串

       问题提出

MFC自带函数_ultotint ivalue, TCHAR* szBuf, int radix;可以将整数转换为16进制。不过使用这个函数有个问题就是如果16进制的高位为零的时候,就自动忽略。

比如

WORD    wL = 0x3;

TCHAR   szStandard[5];

_itot(wL,szStandard, 2);

szStandard的结果是“11”,跟我想要的“0011”有点差距。

查来查去的又浪费时间,还是自己写转换函数吧。嘿嘿

 

■ 简单要求(式样):

输入:整数Byte,有效位为低4位。 

输出:TCHAR* 指向的数组。要求输出的值为“xxxx”格式。注意格式不是“xxxx xxxx”。因为我需要的Byte每次只是转换低4Bit

 

■ 函数实现代码:

 

void _byte_to_bitstr(BYTE cValue, LPTSTR lpszBuf)

{
        
if ( lpszBuf == NULL )
                
return ;

       
int x        = 0;
        
int radix = 2;

        BYTE cTmpValue 
= cValue & 0x0F// Only calc the low 4 Bit 

       
while(cTmpValue)
       {
           cTmpValue 
/= radix;
           
if (cTmpValue)
                x
++;
       }
        
for(int i = 0; i < 4; i++)                  // result must be 0000 ~ 1111 !! 
        {
                lpszBuf[i] 
= L'0';
        }
        lpszBuf[
4= L'\0';

        
int iIndex = 3;
       
while( x >= 0 )
       {
           
const int v = cValue % radix;
            
if (v > 10)
                  lpszBuf[iIndex] 
= 'a' + v - 10;
          
else
                 lpszBuf[iIndex] 
= '0' + v;
           
           iIndex
--;
          cValue 
/= radix;
          x
--;
       }

}

 

 

       测试:

 

TCHAR szBuf[5];

BYTE cValue 
= 0x3;

_byte_to_bitstr (cValue, szBuf);

 

 

       应用

给定一个WORD wValue = 0xcc33;可以得到字符串。

1100 1100 0011 0011

 

WORD wValue = 0xcc33;                                                     

CString strValue;

BYTE    cValue;

 

TCHAR               szBitArray3[
5];

TCHAR               szBitArray2 [
5];

TCHAR               szBitArray1 [
5];

TCHAR               szBitArray0 [
5];

cValue 
= HIBYTE(wValue);

_byte_to_bitstr ((cValue 
>> 4& 0x0F, szBitArray3);

_byte_to_bitstr ((cValue 
& 0x0F ),                           szBitArray2);

 

cValue 
= LOBYTE(wValue);

_byte_to_bitstr ((cValue 
>> 4& 0x0F, szBitArray1);

_byte_to_bitstr (cValue 
& 0x0F ,                szBitArray0);

 

strValue.Format(_T(
"%s %s %s %s"), szBinary3, szBinary2, szBinary1, szBinary0);

 

posted on 2009-03-05 12:32 岳阳 阅读(1499) 评论(0)  编辑 收藏 引用 所属分类: 『 VC&MFC 』


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理