der unterschied zwischen cardinal (4 bytes unsigned) und integer (4 bytes signed) ist doch nur die vorzeichenunterstützung. integer ist signed, cardinal unsigned. möglicherweise liegt da auch der hund begraben. egal, runtergebrochen ist ein bit immer ein bit und fertig. 4 bytes lassen sich immer auch mit 4 bytes füttern. alles andere ist nur darstellerei
im debugger ist mir beim ios debuggen schon öfter aufgefallen, dass datentypen mit 64 bit statt den erwarteten 32 geführt werden.
eigentlich schließt der code das in diesem fall ja schon aus und leider will mein debugger die cardinal-werte mit ios auch nicht als hex anzeigen (an anderer stelle war es auch schonmal andersherum, dass nur hex angezeigt wurde). aber vielleicht gibt die längenberechnung ja auch einen "gepatchten" wert zurück, damit ... was weiß ich wozu
aber was solls. der int-wert funzt mindestens schonmal unter ios und windows. android hab ich nicht getestet.