Konwertowanie Hex --> Int

0

Kowertowanie z liczby (integer) na liczbe przedstawiana w ukladzie szesnastkowym (hexadecymalnym) odbywa sie za pomoca HEXTOINT(intereger).
Pewien koles na czacie www.community.borland.com
zapytal tamtejszych programistow o konwertowanie w odwrotna strone.
Odpowiedz brzmiala: HexToBin. Podziekowal i wyszedl, a koles, ktory mu odpowiedzial, zbluzgal go za to, ze nie potrafi korzystac z Pomocy Delphi. Ja mu na to, zeby mi wyslal zpolszczona wersje 8&gt&gt. Nic nie odpowiedzial.

Kiedy sprawdzalem te jego konwersje, napotkalem pewien problem. Otoz jezeli ostatni parametr tej funkcji, nie jest zerem, to wszystko sie ladnie kompiluje, ale jak wciskam Baton (8&gt), znaczy Button, to wlazi blad. Jezeli natomiast ostatni parametr funkcji HexToBin wynosi zero, to po przekonwertowaniu liczby, ta liczba wynosi zero.
Poza tym, bin to binary, a koles chcial int czyli integer.

Ktos pomoze?

--

The best of lamers:)
-pB_No-

0

-pB_No- [mailto:[email protected]] w dniu 23.2.2002 15:38 napisal:
Kowertowanie z liczby (integer) na liczbe przedstawiana w ukladzie szesnastkowym (hexadecymalnym) odbywa sie za pomoca HEXTOINT(intereger).
&gtPewien koles na czacie www.community.borland.com
&gtzapytal tamtejszych programistow o konwertowanie w odwrotna strone.
&gtOdpowiedz brzmiala: HexToBin. Podziekowal i wyszedl, a koles, ktory mu odpowiedzial, zbluzgal go za to, ze nie potrafi korzystac z Pomocy Delphi. Ja mu na to, zeby mi wyslal zpolszczona wersje 8&gt&gt. Nic nie odpowiedzial.
&gt
&gtKiedy sprawdzalem te jego konwersje, napotkalem pewien problem. Otoz jezeli ostatni parametr tej funkcji, nie jest zerem, to wszystko sie ladnie kompiluje, ale jak wciskam Baton (8&gt), znaczy Button, to wlazi blad. Jezeli natomiast ostatni parametr funkcji HexToBin wynosi zero, to po przekonwertowaniu liczby, ta liczba wynosi zero.
&gtPoza tym, bin to binary, a koles chcial int czyli integer.
&gt
&gt
&gt&gt Ja znalazlem kiedys taka funkcje na pewnej stronie (adresu nie pamietam)

Jak wykonać konwersję z systemu dziesiętnego na binarny lub szesnastkowy i na odwrót?
Można użyć do tego celu funkcji napisanych przez Milosza Krajewskiego:

function Chr2Int(c: Char): Integer;
begin
c := UpCase(c);
if (c &gt= '0') and (c &lt= '9') then Result := Integer(c) - Integer('0')
else Result := Integer(c) - Integer('A') + 10;
end;

function Int2Chr(i: Integer): Char;
begin
if i &lt 10 then Result := Char(i + Integer('0')) else
Result := Char(i - 10 + Integer('A'));
end;

function Str2Int(s: String; base: Integer): Integer;
var
i: Integer;
begin
Result := 0;
for i := 1 to Length(s) do Result := (Result * base) + Chr2Int(s[i]);
end;

function Int2Str(v: Integer; base: Integer): String;
var
m: Integer;
begin
Result := ; while v &lt&gt 0 do begin m := v mod base; v := v div base; Result := Int2Chr(m) + Result; end; if Result = then Result := '0';
end;

Przykład użycia:

labelHex := Int2Str(157, 16);
labelBin := Int2Str(157, 2);
labelOct := Int2Str(157, 8);
label19 := Int2Str(157, 19); * to bedzie w 19-stkowym

ValueHex := Str2Int('110101010', 2);
ValueBin := Str2Int('AF16', 16);
ValueOct := Str2Int('740', 8);
Value7 := Str2Int('666', 7); * z systemu 7-kowego

labelBin := Int2Str(Str2Int(labelHex, 16), 2); // 16 -&gt 2

Dziala! Sprawdzilem.

PC

0

dzieki, to to, o co mi chodzilo.

a tak poza tym, potrafisz wyjasnic mi, co robilem zle z funkcja hexttobin(string)?

1 użytkowników online, w tym zalogowanych: 0, gości: 1