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