![]() |
Array of Byte in Array of Integer
Hallo zusammen,
ich habe das problem, dass mir ein Array mit byte werten vorliegt, die ich aber gerne als integer darstellen möchte, das heißt: ich brauche eine umwandlung. ich würde gerne jeweils 4 byte werte zu einem integer wert zusammenfassen, und das ohne großen rechenaufwand. Im speicher liegen die 4 bytes ja einfach nur hintereinander, da muss es ja eigentlich möglich sein, statt 4 mal einen byte wert zu speichern die 4 werte aufeinmal zu speichern und als integer zu zeigen. danke :) |
Re: Array of Byte in Array of Integer
Ich gehe davon aus, dass es sich bei diesen vier Bytes um die vier Bestandteile deines Integers handelt, richtig?
Dann könntest du (als Bombensicher funktionierende möglichkeit, ich hab gerade keine Ahnung, wie du direkt auf die Integer-Bytes zugreifen kannst) Einen TMemoryStream anlegen, die ersten vier Bytes in richtiger Reihenfolge mittels write(byte[i,j],1) hineinschreiben, dann ein seek(0,soFromBeginning) machen und deinen Integer mittels read(integer[i],4) abholen ... Es geht bestimmt effezienter, aber so finde ich's am einfachsten ... mfG Markus |
Re: Array of Byte in Array of Integer
Delphi-Quellcode:
Also PIntegerArray(@BA)^[0] für'n ersten Integer.
Type TByteArray = packed Array of Byte;
TIntegerArray = packed Array of Integer; PIntegerArray = ^TIntegerArray; Var BA: TByteArray; PIntegerArray(@BA)^ LENGTH des IntegerArrays ist dann natürlich Length(BA) div 4 und nicht Length(PIntegerArray(@BA)^) :warn: Wenn du aber ein statisches ByteArray hast, dann auch so
Delphi-Quellcode:
Über MyArray.I kommst du dann an die Integerversion und mit MyArray.B die ByteVersion.
Type TMyArray = packed Record
Case Integer of 0: (B: packed Array[0..Len-1] of Byte); 1: (I: packed Array[0..Len div 4-1] of Integer); End; Var MyArray: TMyArray; |
Re: Array of Byte in Array of Integer
Hallo,
Zitat:
Gruß xaromz |
Re: Array of Byte in Array of Integer
Danke himitsu hat mir sehr viel weitergeholfen :)
|
Re: Array of Byte in Array of Integer
Zitat:
Na ja, es kommt halt nurdarauf hinaus, dass man zwar den Speicherplatz gleich läßt, aber dafür den Zugriff darauf andert. [edit] :shock: BlackJack hat recht :wall: |
Re: Array of Byte in Array of Integer
sollte TMyArray nicht ein record sein?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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