Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   IntToHex funzt nicht bei Unsigned 64 Bit Integer (https://www.delphipraxis.net/120536-inttohex-funzt-nicht-bei-unsigned-64-bit-integer.html)

devidespe 12. Sep 2008 09:41


IntToHex funzt nicht bei Unsigned 64 Bit Integer
 
Hallo,

ich habe einen unsigned 64 Bit Integer Wert, den ich gerne hexadezimal darstellen möchte. Das funktioniert aber anscheinend nicht mit IntToHex, da die ersten 8 Byte einfach abgeschnitten werden. In der Delphi 2007 Hilfe steht, dass ein Int64 verwendet werden kann, damit ist aber die reguläre Variante (signed, inkl. Minusbereich) gemeint.

Gibt es eine Möglichkeit, einen unsigned und als UInt64 deklarierten Wert vollständig mit IntToHex anzuzeigen ?

Bernhard Geyer 12. Sep 2008 09:43

Re: IntToHex funzt nicht bei Unsigned 64 Bit Integer
 
Schreib dir ne Funktion der Int64 in zwei Int32-Werte Zerlegt und diese dan mit IntToHex(Teil1)+IntToHex(Teil2) zusammenfügt.

Klaus01 12. Sep 2008 10:25

Re: IntToHex funzt nicht bei Unsigned 64 Bit Integer
 
Hallo,

diese Funktion:
Delphi-Quellcode:
function UInt64ToHex(Value: Int64): string;
type
  TByteArray = array[0..7] of Byte;
var
  I : Byte;
  B1 : ^TByteArray;
begin
  Result := '';
  //Place the pointer of bytes to the value (-:
  B1 := Addr(Value);

  for I := High(B1^) downto Low(B1^) do
    Result := Result + IntToHex(B1^[I], 2);
  while ((Result[1] = '0') and (Length(Result) > 1)) do
    Delete(Result, 1, 1);
end;
habe ich hier gefunden.

Grüße
Klaus

devidespe 12. Sep 2008 10:56

Re: IntToHex funzt nicht bei Unsigned 64 Bit Integer
 
Vielen dank, das war die Lösung.

Ich kann nur hoffen, dass Delphi 2009 damit besser zurecht kommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.

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