Hallo,
jetzt hab ich's endlich geschafft, an die C-Struktur Daten meiner DLL ranzukommen - da kommt gleich das nächste Problem auf mich zu:
Ich habe u.a. Strukturen, deren Deklaration ungefähr so aussieht (mit uint sind unsigned 32 Bit Integer gemeint):
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>typedef struct myStruct
{
uint value1 : 11;
uint value2 : 7;
uint value3;
uint value4: 1;
} myStruct;</div>
Jetzt sind meine Kenntnisse über C-Strukturen nicht die vollständigsten, aber ich schätze mal, dass "uint value1 : 11;" bedeutet, dass aus dem Speicher 11 bit gelesen werden und in einem 32 Bit uint landen usw. Demnach hätte diese Struktur eine Größe von 11+7+32+1 = 51 Bit (durch 8 = 6,375 ~ 7 Byte).
Stimmt das so?
Und wenn ja, wie kann ich die Daten möglichst effektiv da rausholen?
Aus der DLL hol ich die Daten in einem U8-Array raus.
Ich habs schon so versucht, dass ich aus dem U8 Array ein Bool-Array gebastelt habe:
und dann hol ich mir daraus die einzelnen Werte mit diesem Code:
Jetzt ist mir zum einen die Taktik mit der For-Schleife zu langsam (ich muss eine ziemlich große Datenmenge pro Sekunde verarbeiten) und zum anderen bin ich mir nicht ganz sicher, ob die Bits auch alle in der richtigen Reihenfolge stehen, damit auch die richtigen U32 Werte herauskommen (bei meinem Programm kommen bisweilen nämlich teilweise ziemlich merkwürdige Daten raus - vor allem bei den Werten, die aus mehr als 8 Bit erstellt werden).
Ich hoffe, dass mir auch bei diesem Thema noch zu helfen ist...
Vielen Dank schonmal im Voraus!
Viele Grüße und ein schönes Wochenende,
Robert