Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Nochmals HexToString und StringToHEx (https://www.delphipraxis.net/87023-nochmals-hextostring-und-stringtohex.html)

fapsons 22. Feb 2007 10:04


Nochmals HexToString und StringToHEx
 
Habe gestern von jemanden unten stehnde Funktionen bekommen.
Sie laufen auch soweit. Das Problem ist nur, ich bräuchte die Funktion in einem anderen HEX-Format. Die Ausgabe müsste in reinen Zahlenwerte sein und nicht auch in Buchstaben.
Kann mir jemand sagen, ob ich die beiden Funktionen entsprechend noch umschreiben kann?

Gruß
-fapsons--


function StringToHexStr(const s : string):string;
begin
if s = '' then
Result := ''
else
begin
SetLength(Result, Length(s)*2);
BinToHex(PChar(s), PChar(Result), Length(s));
end;
end;



function HexStringToStr(s : string):string;
begin
if s = '' then
Result := ''
else
begin
if Odd(length(s)) then
s := '0'+s;
SetLength(Result, Length(s) div 2);
HexToBin(Pchar(s), PChar(Result), Length(Result));
end;
end;

Surrounder 22. Feb 2007 10:40

Re: Nochmals HexToString und StringToHEx
 
Also Hex ist halt nun mal mit Zahlen und Buchstaben von A-F! Kannst mal ein Beispiel geben, ich blick eigentlich nicht was Du meinst

EDatabaseError 22. Feb 2007 10:42

Re: Nochmals HexToString und StringToHEx
 
Delphi-Quellcode:
{************************************************************************** 
* NAME:   StringToHexStr
* DESC:   Konvertiert einen String in eine hexadezimale Darstellung
*************************************************************************} 
function StringToHexStr(const value:string):string;
begin
   SetLength(Result, Length(value)*2); // es wird doppelter Platz benötigt
   if Length(value) > 0 then
      BinToHex(PChar(value), PChar(Result), Length(value));
end;

{************************************************************************** 
* NAME:   HexStrToString
* DESC:   Dekodiert einen hexadezimalen String
*************************************************************************} 
function HexStrToString(const value:string):string;
begin
   SetLength(Result, Length(value) div 2); // es wird halber Platz benötigt
   if Length(value) > 0 then
      HexToBin(PChar(value), PChar(Result), Length(value));
end;
Das sollte dir vllt. helfen.


Ach du möchtest nur die Dezimalen des HEX...dann nimm Ord(Char)...

fapsons 22. Feb 2007 12:39

Re: Nochmals HexToString und StringToHEx
 
Ach du möchtest nur die Dezimalen des HEX...dann nimm Ord(Char)...

Ja, genau das brauche ich. Lässt sich das denn auch wieder umkehren?

fapsons 22. Feb 2007 12:48

Re: Nochmals HexToString und StringToHEx
 
Habe jetzt unten aufgeführte Funktion. Die führt auch zum gewünschten Ergebnis.
Lässt sich dieses auch wieder umkehren...;)?



function StringToHex(s:string) : string;
var i : integer;
begin
result := '';
for i := 1 to length(s) do
begin
if i = length(s) then
result := result + intToStr(ord(s[i]))
else
result := result + IntToStr(ord(s[i])) + '';
end;
end;

turboPASCAL 22. Feb 2007 13:20

Re: Nochmals HexToString und StringToHEx
 
@fapsons, schliesse deinen Code mal bitte in Delphitags ein, dann kann man das auch besser lesen.

[delphi]
procedure Foo();
var a, b, c: Byte;
begin
//...
end;
[/delphi]

wird dann zu:

Delphi-Quellcode:
procedure Foo();
  var a, b, c: Byte;
begin
//...
end;

fapsons 22. Feb 2007 13:25

Re: Nochmals HexToString und StringToHEx
 
Delphi-Quellcode:
function StringToHex(s:string) : string;
var i : integer;
begin
   result := '';
   for i := 1 to length(s) do
   begin
       if i = length(s) then
       result := result + intToStr(ord(s[i]))
          else
          result := result + IntToStr(ord(s[i])) + '';
       end;
end;
CHR soll ja die Umkehrfunktion sein. Komme damit aber trotzdem nicht zurecht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 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