Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   einen Hexwert umrechnen in einen Dezimalwert (https://www.delphipraxis.net/179336-einen-hexwert-umrechnen-einen-dezimalwert.html)

juergen 27. Feb 2014 18:59

einen Hexwert umrechnen in einen Dezimalwert
 
Hallo zusammen,

ich bin mir ziemlich sicher dass es eine fertige Funktion gibt, finde diese nur nicht.
Ich habe in einem String einen Hexwert. Diesen muss ich umrechnen in einen Dezimalwert.
Weiß da jemand Rat?

Vielen Dank schon mal vorab!

Volker Z. 27. Feb 2014 19:28

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Hallo,

Zitat:

ich bin mir ziemlich sicher dass es eine fertige Funktion gibt, finde diese nur nicht [...]
Schau mal da: StrToInt

Gruß

juergen 27. Feb 2014 20:16

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Hallo Volker,
vielen Dank für deine Hilfe! :thumb:
Da wäre ich jetzt nie drauf gekommen dass StrToInt() auch für Hexwerte gilt, aber in der Hilfe stehts so.

Jetzt hab ich noch ein Problem:
Ich muss 2 8stellige Hexwerte addieren...
Kann mir hierbei noch jenmand helfen?

Vielen Dank!

zeras 27. Feb 2014 20:21

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Zitat:

Zitat von juergen (Beitrag 1249934)

Jetzt hab ich noch ein Problem:
Ich muss 2 8stellige Hexwerte addieren...
Kann mir hierbei noch jenmand helfen?

Vielen Dank!

Dann wandle die Werte in Integer, addiere diese und wandle wieder zurück.
Meines Wissens musst du nur ein "$" vor den Hexwert setzen, damit dieser umgerechnet wird.

Volker Z. 27. Feb 2014 21:05

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Hallo,

Zitat:

Ich muss 2 8stellige Hexwerte addieren [...]
Und was ist da jetzt genau das Problem? Falsches Ergebnis, weil die Summe den Wertebereich eines Int64 sprengt oder suchst Du IntToHex

Gruß

juergen 27. Feb 2014 21:15

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Hallo Matthias,

danke für deinen Hinweise!

Ich habe es folgendermaßen versucht:

Delphi-Quellcode:
s := IntToStr((StrToInt('$' + (RightStr(sl_Quelle.Strings[0], 8)))) + (StrToInt('$' + ('00' + LeftStr(sl_Quelle.Strings[0], 6)))));

Zur Veranschaulichung ein Beispiel:
Hexwert 1 = 55 22 8D 04
Hexwert 2 = 00 80 2A D8

Diese beiden Werte addiert sollen
52 A2 B7 DC
ergeben.

Das muss ich dann noch in Dezimal umwandeln. Das Endergebnis soll
1386395612
sein.

@Volker,
ich habe natürlich einiges versucht, da gab es auch Wertebereichsverletzungen beim Int64

zeras 27. Feb 2014 22:27

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Zitat:

Zitat von juergen (Beitrag 1249949)
Zur Veranschaulichung ein Beispiel:
Hexwert 1 = 55 22 8D 04
Hexwert 2 = 00 80 2A D8

Diese beiden Werte addiert sollen
52 A2 B7 DC
ergeben.

Das muss ich dann noch in Dezimal umwandeln. Das Endergebnis soll
1386395612
sein.

Laut Rechner in Windows ergibt das Dezimal aber 1436727260???

zeras 27. Feb 2014 22:31

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mal auf einen Button gelegt
Delphi-Quellcode:


procedure TForm1.Button1Click(Sender: TObject);
begin
 Button1.Caption := IntToStr(StrToInt('$55228D04') + StrToInt('$00802AD8'));
end;
Oder willst du mit Signed Werten arbeiten?

Volker Z. 27. Feb 2014 22:34

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Hallo,

der Code hat nichts mit dem Beispiel zu tun. Wenn in sl_Quelle.Strings[0] 55228D04 steht, dann rechnet Dein Code $55228D04 + $0055228D, denn Du greifst doch auf den gleichen String zu (sl_Quelle.Strings[0])
Delphi-Quellcode:
ShowMessage (IntToStr (StrToInt ('$55228D04') + StrToInt ('$00802AD8'))); // Korrektes Ergebnis: 1436727260 [52A2B7DC]Hex
ShowMessage (IntToStr (StrToInt ('$FFFFFFFF') + StrToInt ('$FFFFFFFF'))); // Falsche Ergebnis: -2
ShowMessage (IntToStr (StrToInt64 ('$FFFFFFFF') + StrToInt64 ('$FFFFFFFF'))); // Korrektes Ergebnis: 8589934590 [1FFFFFFFE]Hex
Gruß

juergen 27. Feb 2014 23:08

AW: einen Hexwert umrechnen in einen Dezimalwert
 
Hallo zusammen ,
danke für das rege Interesse! :thumb:

@zeras
Mit dem Windowsrechner geht das wohl deswegen nicht, weil man bei dem 2. Wert keine führenden Nullen eingeben kann.

Leider weiß ich nicht was "Signed Werte" sind.

@ Volker
Ich greife auf einen Teil eines größeren Strings zu! Zum einen die letzten 8 Zeichen und zum anderen 2führende Nullen und die ersten 6 Zeichen des Strings.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz