注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

快乐的机器猫 大桥加加网易分站

要有更宽广的视野和胸怀

 
 
 

日志

 
 

[原创]BCB里如何进行16进制和10进制的互相转化实例  

2008-08-09 16:59:55|  分类: 计算机软件学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

以BCB6 (Borland C++ Builder 6.0)为例:

这个小函数很有用哦:

//------HexToInt: 16进制到10进制转换
int HexToInt(AnsiString Hex)
{
        return StrToInt("$"+Hex);

}

再来看10进制到16进制的转换:

IntToHex(int Value, int Digits);     //这是个BCB内置的函数,其中Digits 代表HEX值的位数,例如如果Digits是位数,则转换为0x0F 而非0xF 或0x000F )

下面通过一个实例来说明:

代码如下:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

int HexToInt(AnsiString Hex);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
//------HexToInt: 16进制到10进制转换
int HexToInt(AnsiString Hex)
{
        return StrToInt("$"+Hex); //這行就解決啦
}
//-----------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        unsigned long TotalCount = StrToInt(Edit9->Text);//总个数
        unsigned char numarray[6];
        AnsiString tempstring;

        //从控件中取数
        numarray[5]= HexToInt(Edit5->Text);
        numarray[4]= HexToInt(Edit4->Text);
        numarray[3]= HexToInt(Edit3->Text);
        numarray[2]= HexToInt(Edit2->Text);
        numarray[1]= HexToInt(Edit1->Text);
        numarray[0]= HexToInt(Edit0->Text);

        Memo1->Clear(); //先清空Memo1

        //计算并生成
        for(long j=0; j<TotalCount; j++)
        {
                //拼接字符串
                for(int k=5;k>0;k--)
                        tempstring = tempstring + IntToHex(numarray[k],2)+"-";
                tempstring = tempstring + IntToHex(numarray[0],2);//最后一个不加"-"号
                Memo1->Lines->Add(tempstring);
                tempstring="";  //清空

                //以下是产生一列MAC地址的过程
                numarray[0]++;
                for(int i=0; i<6; i++)
                {
                        if(numarray[i] == 0)   //超过255产生溢出
                            numarray[i+1]++;
                        else break;
                }
        }

}
//---------------------------------------------------------------------------


 

 

  评论这张
 
阅读(5964)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017