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

以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;
                }
        }

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


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值