Mam problem. Może ktoś pisze pod C++Builder 5. Nie wiem jak sobie poradzić z wyprowadzeniem danych binarnych np. z pliku *.bin na ekran w postaci hex, a nie ASCII.
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tamLabel1->Caption = IntToHex(52,4);void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned char InputData[512];
unsigned char b;
int i,j;
Label1->Caption = "";
for (i=0; i<512/16; i++)
{
Label1->Caption = Label1->Caption + IntToHex(i*16,4) + " ";
for (j=0; j<16; j++)
{
Label1->Caption = Label1->Caption + IntToHex(InputData[i*16+j],2) + " ";
if (j==7)
Label1->Caption = Label1->Caption + "- ";
}
for (j=0; j<16; j++)
{
b = InputData[i*16+j];
if (b < ' ' | b > 'z') b = '.'; //test czy bajt jest poprawnym ASCII
Label1->Caption = Label1->Caption + char(b);
}
Label1->Caption = Label1->Caption + "\n";
}
} int handle;
if (OpenDialog1->Execute())
{
handle = FileOpen(OpenDialog1->FileName, fmOpenRead);
FileRead(handle, InputData, 512);
FileClose(handle);
} AnsiString Lines; // deklaracja zmiennej pomocniczej
Lines = "";
for (i=0; i<4096/16; i++)
{
Lines += IntToHex(i*16,4) + " ";
for (j=0; j<16; j++)
{
Lines += IntToHex(InputData[i*16+j],2) + " ";
if (j==7)
Lines += "- ";
}
for (j=0; j<16; j++)
{
b = InputData[i*16+j];
if (b < ' ' | b > 'z') b = '.'; //test czy bajt jest poprawnym ASCII
Lines += char(b);
}
Lines += "\n";
}
Memo1->Lines->Text = Lines;
}
for (int i = 0; i<4096; i++)
InputData[i] = 0;