Bytearray umsortieren

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Bytearray umsortieren

Beitrag von Vbxler »

Hallo,
ich muss Messwerte, die ich in einem Bytearray geliefert bekomme,
umsortieren (Big- Little- Endian) um anschliessend eine
Variable vom Type Single erhalte.

Habe das jetzt so gelöst (funktioniert auch), wollte aber fragen,
ob es eine einfachere und/oder schnellere Lösung dafür gibt.

Code: Alles auswählen

 
//---------------------------------------------------------
//  Umwandlung ByteArray  nach Single
//---------------------------------------------------------
function TDave.ByteToSingle(addr : ptrByte) : single;
type
  Tbyte4 = array[0..3] of byte;
var
    byTemp : Tbyte4;
    siTemp : single absolute byTemp;
begin
    byTemp[0] := (addr + 3) ^;
    byTemp[1] := (addr + 2) ^;
    byTemp[2] := (addr + 1) ^;
    byTemp[3] := (addr + 0) ^;
 
    siTemp := Single(byTemp);
    ByteToSingle := siTemp;
end;
Danke für jede Info.
Vbxler
-------------------------

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Bytearray umsortieren

Beitrag von mschnell »

Das ist eine der wenigen Aufgaben, die tatsächlich in Assembler deutlich schneller sein können.
Lohnt sich aber natürlich nur bei Millionen von Iterationen.

-Michael

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Bytearray umsortieren

Beitrag von Scotty »


Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: Bytearray umsortieren

Beitrag von Vbxler »

Danke für eure Antworten,

für 1.000.000 aufrufe werden 15-30ms benötigt, damit kann man leben.
Vbxler
-------------------------

Antworten