TheFuriousLion schrieb:
Ah, jetzt ergibt vieles einen Sinn.Michael schrieb:
In der Tabelle da spielt sich alles, was unter „Flags“ steht, im Byte 0 ab.
Mich hat 'let reportData = UnsafePointer<UInt8>(data.bytes)' verwirrt, da ich dachte der Pointer zeigt auf nur ein Byte. Und ein Byte besteht bekanntlich ja aus 8 Bits. Kann der UnsafePointer<UInt8> aus mehreren Bytes bestehen? Und warum nimmt man überhaupt UInt8, wenn auch UInt16 vorkommen kann?
UnsafePointer<UInt8> zeigt ja nur auf eine Speicherstelle, die als UInt8 interpretiert werden soll. UInt8 nimmt man hier, weil man ja auf ein einzelnes Byte zugreifen will. Bei UInt16 würdest du immer gleich zwei Bytes am Wickel haben.
TheFuriousLion schrieb:
Ist das nicht auch ein Byte? Eines bei dem halt nur aufgrund des Bitweisen-UND-Operators nur ein Bit 1 ist?
Ja, es gibt ja keinen Datentyp „Bit“. Deshalb muss man, wenn man einzelne Bits auswerten will mit den binären Verknüpfungen arbeiten.
Genau. Alternativ könntest du auch das Schieben nach rechts weg lassen. Dann müsstest du halt mit 0, 2, 4 oder 6 vergleichen.