Home of Gamehacking - Archiv
Dez2Hex Converter - Druckversion

+- Home of Gamehacking - Archiv (http://archiv-homeofgamehacking.de)
+-- Forum: Programme und Tools (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=12)
+--- Forum: Sonstige Programme (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=23)
+--- Thema: Dez2Hex Converter (/showthread.php?tid=2402)



Dez2Hex Converter - ABartX - 14.12.2013

[attachment=1648]
ToolName: Dez2Hex
ToolVersion: 1.0.2.0
AnzahlFunktionen: +2

TOOL .NFO


feedback jeglicher art erwünscht, solange sie nicht gegen die forum regeln verstossen :P

viel spass greetz ABartX

[attachment=1646]


RE: Dez2Hex Converter - iNvIcTUs oRCuS - 15.12.2013

Warum eigentlich nur 2147483647 ?
Da dein Tool nicht zwichen Vorzeichen unterscheidet könntest Du ja auch die vollen 32 Bit (4294967295) berrechnen (FFFFFFFF).


RE: Dez2Hex Converter - ABartX - 15.12.2013

sagen wir so, es wird nicht berechnet sondern "nur" umgewandelt, und das geht nur bis max. 2147483647.

wenn ich das tool einmal update, werde ich das sicher berücksichtigen, und entsprechend ändern Wink


greetz ABartX


RE: Dez2Hex Converter - iNvIcTUs oRCuS - 15.12.2013

Versuch mal den Wert "-1" in das Dezimalfeld zu kopieren...
Oder mal den Wert "FFFFFFFF" ins Hex Feld...

Oder einfach so lösen...
Deckt zudem auch das 64 Bit Spektrum ab...
Wohlgemerkt, auch nur vorzeichenbehaftet...

Delphi Code
IntToHex(StrToInt64(Edit1.Text), 16)



Vorzeichenlos könntest Du das Ganze auch so lösen...

Delphi Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function Unsigned64(StrValue:String; var uValue:UInt64 ):Boolean;
var
  Start,Base,Digit:Integer;
  n:Integer;
  Nextvalue:UInt64;
begin
  result := false;
  Base := 10;
  Start := 1;
  StrValue := Trim(UpperCase(StrValue));
  if StrValue='' then
    exit;
  if StrValue[1]='-' then
    exit;
  if StrValue[1]='$' then
  begin
    Base := 16;
    Start := 2;
    if Length(StrValue)>17 then // $+16 hex digits = max hex length.
        exit;
  end;
  uValue := 0;
  for n := Start to Length(StrValue) do
  begin
      if Character.IsDigit(StrValue[n]) then
          Digit := Ord(StrValue[n])-Ord('0')
      else if  (Base=16) and (StrValue[n] >= 'A') and (StrValue[n] <= 'F') then
          Digit := (Ord(StrValue[n])-Ord('A'))+10
      else
          exit;// invalid digit.

      Nextvalue := (uValue*base)+digit;
      if (Nextvalue<uValue) then
          exit;
      uValue := Nextvalue;
  end;
  result := true; // success.
end;

function ConvertStr(Value:String):UInt64;
begin
  if not Unsigned64(Value,result) then
    raise EConvertError.Create('Keinen gültigen Wert eingegeben');
end;


Aufgerufen wirds dann z.B. so...

Delphi Code
Edit1.Text:= IntToHex(ConvertStr(Edit1.Text), 8);




RE: Dez2Hex Converter - ABartX - 15.12.2013

hi iNvIcTUs oRCuS,

danke für die idee.
werde mich bei gelegenheit mit dem source code auseinander setzen Smiling


greetz ABartX