![]() |
Re: Zeitoptimierung bei Stringzusammensetzung
Nachtrag:
Leider scheint die Funktion nicht ordnungsgemäß zu funktionieren. für st := 'FC'; sollte eigentlich das kleine Zeichen ü herauskommen, ich erhalte aber stattdessen ein R! Denn statt j = 15 und k = 12 erhalte ich dann j = 5 und k = 2; Sind hier einfach nur die ASCII-Zahlen falsch? Oder müssen 10 weniger abgezogen werden? |
Re: Zeitoptimierung bei Stringzusammensetzung
Zitat:
|
Re: Zeitoptimierung bei Stringzusammensetzung
Delphi-Quellcode:
Ist Quatsch, statt 65 muss das 55 sein. :oops: Damit Kleinbuchstaben berücksichtigt werden (dann ist das zwar kein Hex, aber egal), würde ich mir eine Lookuptabelle basteln:
j := Ord (st[1]); if j>57 then j := j-65 else j:=j-48;
k := Ord (st[2]); if k>57 then k := k-65 else k:=k-48;
Delphi-Quellcode:
Zum shiften: linksshiften um X Stellen ist gleichbedeutend mit einer multiplikation um 2^X. Hier werden aus 2 'nibbles' (4 bit) ein 8bit werden zusammengebastelt. Ich schiebe die ersten 4 bits um 4 stellen nach links (shl 4) und packe die zweiten 4 bits in die dann freien 4 bits (or).
Var
HexTable : Array [Char] Of Byte; Begin For c:='A' to 'F' do HexTable [c] := Ord (c)-Ord('A') + 10; For c:='a' to 'f' do HexTable [c] := Ord (c)-Ord('a') + 10; For c:='0' to '9' do HexTable [c] := Ord (c)-Ord('0'); ... st2[i] := HexTable(st[1]) shl 4 or HexTable(st[2]); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz