Brauche ne kleine Hilfe zu Byte Arrays

raysprak

Mitglied
Moin! Ich muß grad eine .dll erstellen, der ein int oder float Wert übergeben wird.Diesen Wert muss ich dann in ein Byte-Array speichern und den Zeiger darauf dann an eine weitere Klasse übergeben, danach muss ich dann wieder ein Byte-Array in einen int oder float Wert wandeln. Geht das überhaupt? Und wenn, dann wie? Ich hab da schon soetwas in der .net sdk entdeckt, aber ich würde das lieber mit ner c++ standard-lib machen. Kann mir jemand helfen?
Gruß!
 
Ein ByteArray ist nichts weiter als ein Speicherblock. Floats und Ints sind auch nichts anderes. Du brauchst also eigentlich nur dein float oder int in dein ByteArray reinkopieren. Wichtig ist, dass das ByteArray gross genug ist, um Platz für ein float oder int zu haben. Wenn du einen gängigen 32-bit-Compiler benutzt, sind das 4 Bytes. Du kannst zur Sicherheit einfach das doppelte oder mehr nehmen:

Code:
unsigned char   ucByteArray[20];

// float in Array kopieren
memcpy( ucByteArray, &floatWert, sizeof( float ) );

// int in Array kopieren
memcpy( ucByteArray, &intWert, sizeof( int ) );

// float aus dem Array auslesen
memcpy( &floatWert, ucByteArray, sizeof( float ) );

Das int aus dem Array lesen lasse ich dem geneigten Leser aus den vorgegebenen Beispielen ableiten.
 
moin


Hmm, ein int ist 4 Byte groß und 1 Byte halt nur ein Byte, so gehe ich davon aus das etwas verloren gehen wird, wenn du ein int in ein byte "kopierst/wandelst". Bei float gibt es das selbe Problem.

Hast du irgendwelche Vorgaben bekommen?


mfg
umbrasaxum
 
moin


Sach an!
Trotzdem ist ein Element eines Arrays zu klein, und das war es was ich meinte.
Außerdem war Endurions Beitrag noch nicht da als ich auf Antworten geklickt hab.

Nun wurde ich ja eines besseren belehrt, allerdings nciht von dir...


mfg
umbrasaxum
 
Zurück