AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Widestring nach Hex konvertieren
Thema durchsuchen
Ansicht
Themen-Optionen

Widestring nach Hex konvertieren

Ein Thema von bioser · begonnen am 14. Dez 2005 · letzter Beitrag vom 16. Dez 2005
Antwort Antwort
bioser

Registriert seit: 30. Aug 2005
140 Beiträge
 
#1

Widestring nach Hex konvertieren

  Alt 14. Dez 2005, 16:25
Hallo, gibt es solche fertigen functions, die Widestrings in Hexwerte umwandeln bzw. von Hex nach Widestring konvertieren können. Für Links wäre ich dankbar. Oder klappt das auch mit StrToHex bzw. HexToStr ?
  Mit Zitat antworten Zitat
bioser

Registriert seit: 30. Aug 2005
140 Beiträge
 
#2

Re: Widestring nach Hex konvertieren

  Alt 14. Dez 2005, 18:49
Hallo, ich beantworte meine Frage mal selbst:

Das geht so:

Delphi-Quellcode:
function WStrToHex(SourceStr: WideString): WideString;
var
  hexstr: string;
  i : integer;
begin
  result := '';
  hexstr := '';
  for i := 1 to Length(SourceStr) do
    hexstr := hexstr + IntToHex(Word(SourceStr[i]), 2);
    Result := hexstr;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#3

Re: Widestring nach Hex konvertieren

  Alt 16. Dez 2005, 08:34
Also hexstr brauchst du nicht erst, denn in Delphi kannst du auch gleich mit Result arbeiten. ^^
Außerdem hätte der Copiler bei dir auch schon wegen dem result := ''; meckern sollen
Dann [i]IntToHex(Word(SourceStr), 2);, da sollte doch wohl 'ne 4 rein, denn ein WideChar hat 2 Bytes und demnach 4 HexChars
Delphi-Quellcode:
function WStrToHex(SourceStr: WideString): WideString;
const
  HexTable: Array of Char = '0123456789ABCDEF';
var
  hexstr: string;
  i : integer;
begin
  result := '';
  for i := 1 to Length(SourceStr) do
    Result := Result + IntToHex(Word(SourceStr[i]), 4);
end;

Und schneller geht es, wenn du den String nicht jedesmal in seiner Länge veränderst, sondern die Stringlänge am Anfang einmal festlegst und dann nur noch die einzelnen Chars veränderst.

z.B. (noch schneller geht es über 'nen PChar)
Delphi-Quellcode:
function WStrToHex(SourceStr: WideString): WideString;
const
  HexTable: Array of Char = '0123456789ABCDEF';
var
  i : integer;
begin
  SetLength(result, Length(SourceStr) * 4);
  for i := 0 to Length(SourceStr) - 1 do
  begin
    hexstr[i * 4 + 1] := HexTable[Word(SourceStr[i]) and $0F];
    hexstr[i * 4 + 2] := HexTable[(Word(SourceStr[i]) shr 8) and $0F];
    hexstr[i * 4 + 3] := HexTable[(Word(SourceStr[i]) shr 16) and $0F];
    hexstr[i * 4 + 4] := HexTable[(Word(SourceStr[i]) shr 24)];
  end;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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