Guz Opublikowano 8 Czerwca 2005 Zgłoś Opublikowano 8 Czerwca 2005 czy jest jakis szybki sposob na zamiane w delphi liczb w systemie szesnastkowym na system dziesietny badz odwrotnie? Z gory dzieki Guz Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 8 Czerwca 2005 Zgłoś Opublikowano 8 Czerwca 2005 (edytowane) 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 8 Czerwca 2005 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Guz Opublikowano 9 Czerwca 2005 Zgłoś Opublikowano 9 Czerwca 2005 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 9 Czerwca 2005 Zgłoś Opublikowano 9 Czerwca 2005 Hmm.. Gdy pisałem WMH, to sam szukałem i najwyraźniej nie znalazłem. Jest chyba funkcja zamiany Hex do Bin, ale to raczej jazda z Zakopanego do Wawy przez Gdańsk... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Robi35 Opublikowano 14 Czerwca 2005 Zgłoś Opublikowano 14 Czerwca 2005 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; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
sector Opublikowano 16 Czerwca 2005 Zgłoś Opublikowano 16 Czerwca 2005 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...