Conversões:inteiros-hexadecimais
A VCL contém uma função global chamada IntToHex que captura um inteiro e cria uma AnsiString que conterá a representação hexadecimal do número. IntToHex está localizada em SYSUTILIS.PAS. Ela pega dois argumentos: o primeiro é o número que você quer exibir em formato hexadecimal, e o segundo argumento determina quantos dígitos você deseja exibir. Eis um exemplo:
Coloque um Button no Form e no evento OnClick digite:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i;
i = StrToInt(InputBox("Conversão de valores...", "Digite um número inteiro", ""));
ShowMessage(IntToStr(i) + " em hexadecimal equivale a \n"
+ IntToHex(i, 6 /*quantia de caracteres*/ ));
}
Você também pode usar a função itoa da biblioteca C. A função itoa permite que você especifique um argumento radix. Para converter um número em formato hexadecimal, usamos radix igual a 16. itoa traz um benefício extra que é a possibililidade de converter um número para o formato binário. Neste caso devemos igualar radix a 2. Para calcular um número octal, igualamos o radix a 8; e o radix igualado a 10 devolve o próprio número em decimal.
// Sintaxe de itoa
// char *itoa(int value, char *string, int radix);
#include <sstream.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i;
i = StrToInt(InputBox("Conversão de valores...", "Digite um número inteiro", ""));
char hexad[40];
itoa(i, hexad, 16);
ShowMessage(IntToStr(i) + " em hexadecimal equivale a \n"
+ hexad);
}
Certamente, você também pode usar streams, a função RTL sprintf, ou a função sprintf membro de AnsiString (nova em BCB-4).
#include <sstream.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i;
i = StrToInt(InputBox("Conversão de valores...", "Digite um número inteiro", ""));
ostringstream hexad;
hexad << hex << i;
ShowMessage(IntToStr(i) + " em hexadecimal equivale a \n"
+ hexad.str().c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i;
i = StrToInt(InputBox("Conversão de valores...", "Digite um número inteiro", ""));
char hexad[40];
sprintf(hexad, "%04X", i); // 04 determina quatro caracteres a ser devolvidos
ShowMessage(IntToStr(i) + " em hexadecimal equivale a \n"
+ hexad);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
// Essa função não precisa do arquivo sstream.h
int i;
i = StrToInt(InputBox("Conversão de valores...", "Digite um número inteiro", ""));
AnsiString hexad;
hexad.sprintf("%04X", i);
ShowMessage(IntToStr(i) + " em hexadecimal equivale a \n"
+ hexad);
}
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |