Seite 1 von 1

Fingerprint() Funktion mit Rückgabe eines Speicherzeigers ?

Verfasst: 01.07.2016 21:47
von topsoft
Hallo,

die Funktion Fingerprint() gibt einen String zurück. Diesen wandele ich dann in ein Bytearray um. Beispiel:

Code: Alles auswählen

EnableExplicit
UseSHA3Fingerprint()

Procedure.i HexStr2Bin(daten.s)
  Protected anzahl.i = Len(daten)
  Protected *mem = AllocateMemory(anzahl / 2)
  If *mem And anzahl
    Protected *zmem = *mem
    Protected zdaten.i = 1
    While anzahl
      PokeA(*zmem, Val("$" + Mid(daten, zdaten, 2)))
      *zmem + 1
      zdaten + 2
      anzahl - 2
    Wend
  EndIf
  ProcedureReturn *mem
EndProcedure

Define *mem = HexStr2Bin(Fingerprint(?daten, 8, #PB_Cipher_SHA3, 512))
ShowMemoryViewer(*mem, MemorySize(*mem))
If *mem : FreeMemory(*mem) : EndIf
End

DataSection
  daten:
  Data.a $47, $11, $08, $15, $62, $87, $00, $FF
EndDataSection
Da die Funktion intern mit einem Speicherbuffer rechnet und das Ergebnis dann in einen String wandelt, frage ich mich ob man auch direkt an den Speicher heran kommt bevor der String erstellt wird?
Oder besser wie geht das Effizenter?

Gruß