Skocz do zawartości
Guz

Zamiana Liczb Hex Na Dec I Odwrotnie W Delphi

Rekomendowane odpowiedzi

O ile dobrze pamiętam, to napisałem sobie UNIT, który robił coś takiego. Jak wrócę do domu, to go poszukam i wkleję tutaj (o ile nie zapomnę). Przypomnij mi się na priva tak około 19:00.

 

Inna bajka, że pewnie można by coś w necie znaleźć... :)

 

Edit:

No i znalazłem:

 

{ procedura Hex(val); zamienia (czesciowo) wartosc dziesietna (podana jako parametr val) na 2 wartosci szesnastkowe zapisane 2 zmiennych globalnych}procedure Twmh.Hex(val: Integer);var a,b: integer;begin a:= (val div 16); // wynik z dzielenia b:= (val mod 16); // reszta z dzielenia{ jezeli liczba jest z przedzialu od 0 do 9 to zostaje tylko zamieniona z typu Integer na String; inaczej zostaje odpowiednio zamieniona na wartosc szesnastkowa} Case a of 0..9: x:=IntToStr(a); 10: x:='A'; 11: x:='B'; 12: x:='C'; 13: x:='D'; 14: x:='E'; 15: x:='F'; end; Case b of 0..9: y:=IntToStr(b); 10: y:='A'; 11: y:='B'; 12: y:='C'; 13: y:='D'; 14: y:='E'; 15: y:='F'; end;end;

Fragment kodu pochodzi z mojego programu WebMaster Helper. W drugą stronę chyba nie powinno być większych problemów...

Edytowane przez ULLISSES

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziekuje ale troszku nie o to mi chodzilo - myslalem ze jest jakas metoda ktora to zalatwia od reki. Po prostu mam nieodparte wrazenie ze powinna byc, a piszac dodatkowa procedure zdaje mi sie ze wywazam otwarte drzwi!

 

Ale dziekuje za pomoc :).

 

Guz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

function valhex(c:char):byte;

begin

case c of

'0'..'9':Result:=Ord©-Ord('0');

'a'..'f':Result:=Ord©-Ord('a')+10;

'A'..'F':Result:=Ord©-Ord('A')+10

else Result:=0

end

end;

 

function HexByte(B:Byte):String;

const HexChars : Array [0..$F] of Char='0123456789ABCDEF';

begin HexByte:=HexChars[b shr 4]+HexChars[b and $F];end;

 

function HexWord(B:Word):String;

const HexChars : Array [0..$F] of Char='0123456789ABCDEF';

begin HexWord:=HexChars[hi(b) shr 4]+HexChars[hi(b) and $F]+

HexChars[lo(b) shr 4]+HexChars[lo(b) and $F];end;

 

function HexLong(B:LongInt):String;

const HexChars : Array [0..$F] of Char='0123456789ABCDEF';

begin

HexLong:=HexChars[(b shr 28) And $0F]+HexChars[(b shr 24) And $0F]+

HexChars[(b shr 20) And $0F]+HexChars[(b shr 16) And $0F]+

HexChars[(b shr 12) And $0F]+HexChars[(b shr 8) And $0F]+

HexChars[(b shr 4) And $0F]+HexChars[ b And $0F];end;

 

function Hex64(B:Int64):String;

const HexChars : Array [0..$F] of Char='0123456789ABCDEF';

begin

Hex64:=HexChars[(b shr 60) And $0F]+HexChars[(b shr 56) And $0F]+

HexChars[(b shr 52) And $0F]+HexChars[(b shr 48) And $0F]+

HexChars[(b shr 44) And $0F]+HexChars[(b shr 40) And $0F]+

HexChars[(b shr 36) And $0F]+HexChars[(b shr 32) And $0F]+

HexChars[(b shr 28) And $0F]+HexChars[(b shr 24) And $0F]+

HexChars[(b shr 20) And $0F]+HexChars[(b shr 16) And $0F]+

HexChars[(b shr 12) And $0F]+HexChars[(b shr 8) And $0F]+

HexChars[(b shr 4) And $0F]+HexChars[ b And $0F];end;

 

 

*******************************************

*******************************************

 

W samym delphi masz klika użytecznych funkcji:

ord

inttohex

strtointdef

 

Najprościej wartość dec zmienić w hex dodając parametr "$".

Przykładowo:

 

var

i :integer;

 

Begin

i := 10;<--------- tutaj i przyjmuje wartość 10

i := $10;<---------- a tutaj i przyjmuje wartość 16 (czyli 10 w hexa)

end;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziekuje ale troszku nie o to  mi chodzilo - myslalem ze jest jakas metoda ktora to zalatwia od reki. Po prostu mam nieodparte wrazenie ze  powinna byc, a piszac dodatkowa procedure zdaje mi sie ze wywazam otwarte drzwi!

 

Ale dziekuje za pomoc :).

 

Guz

1488101[/snapback]

nie,raczej nie ma pamietam kiedys jak na pierwszym smestrze koles kazal nam napisac programy do obliczania liczb z jednego systemu na 2gi i nie bylo gotowych procedu/funkcji

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...