Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Umwandeln von Hexadezimal-String zu normal-string? (https://www.delphipraxis.net/27244-umwandeln-von-hexadezimal-string-zu-normal-string.html)

zhangzhonghe 6. Aug 2004 11:20


Umwandeln von Hexadezimal-String zu normal-string?
 
Hi all,

Ich versuche gerade aus einem Hexadezimal-String wieder normalen String zu bekommen. Jeder Zeichen ist 16 bits, so sieht die Hexadezimale Darstellung so aus: 0034 2020 ..

Versucht habe ich mit HexToBin, die leider pwidechar nicht unterstützt und damit keine richtig Ergebnis auslieft.

Danke für alle Tipps.

DelphiFreund 6. Aug 2004 11:31

Re: Umwandeln von Hexadezimal-String zu normal-string?
 
Tut mit leid, aber ich weiss nicht was du meinst.

Gruß DelphiFreund

zhangzhonghe 6. Aug 2004 11:44

Re: Umwandeln von Hexadezimal-String zu normal-string?
 
sorry für mein schlechtes Deutasch.

Das ist mein Problem: ich habe wine Hexadezimale Darstellung, z.B 2020, wie wie bekomme ich das entsprechende Charakter zurück?

Danke

Shaman 6. Aug 2004 12:00

Re: Umwandeln von Hexadezimal-String zu normal-string?
 
Hallo

Delphi-Quellcode:
function HexToChar(const Hex: string): Char;
begin
  Result:= Char(StrToInt('$' + Hex));
end;
Hex sind zwei Zeichen von '00' bis 'FF'

Gruss
Shaman

scp 6. Aug 2004 12:03

Re: Umwandeln von Hexadezimal-String zu normal-string?
 
In dem Fall wäre es nicht Char sondern WideChar. Für einen String mit mehreren Werten hintereinander sähe das dann z.B. so aus:

Delphi-Quellcode:
function HexToBinStrW(const HexStr : string) : WideString;
const
  ValidHexChars : set Of Char = ['0'..'9', 'A'..'F', 'a'..'f'];
  Convert: array['0'..'f'] of SmallInt =
    ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
     -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
     -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
     -1,10,11,12,13,14,15);
var
  HexSize : Integer;
  HexPos : Integer;
begin
  result := '';
  HexSize := length(HexStr);
  HexPos := 0;

  while ((HexSize - HexPos) > 1) do
  begin
    while not (HexStr[HexPos+1] in ValidHexChars) do
    begin
      Inc(HexPos);
      If ((HexSize - HexPos) < 1) then
        Break;
    end;
    If ((HexSize - HexPos) < 4) then
      Break;

    result := result + WideChar( (Convert[HexStr[HexPos+1]] shl 12) +
                                 (Convert[HexStr[HexPos+2]] shl 8) +
                                 (Convert[HexStr[HexPos+3]] shl 4) +
                                 (Convert[HexStr[HexPos+4]]      ) );
    Inc(HexPos, 4);
  end;
end;


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