Zugriff auf Speicher casten
-
Also, ich hab ein array vom typ BYTE.
Jetzt möchte ich aber die Daten im Array mal als float oder double oder short, etc. auslesen. Daszu muss ich das ja casten, oder?Ich hab es so probiert und das geht auch, ist aber nicht schön, oder?
CHAR ReadS8Bit ( void ) { CHAR* back = (CHAR*) (m_pData+m_uiPos); m_uiPos+=1; return *back; } BYTE ReadU8Bit ( void ) { BYTE* back = (BYTE*) (m_pData+m_uiPos); m_uiPos+=1; return *back; } SHORT ReadS16Bit( void ) { SHORT* back = (SHORT*) (m_pData+m_uiPos); m_uiPos+=2; return *back; } USHORT ReadU16Bit( void ) { USHORT* back = (USHORT*)(m_pData+m_uiPos); m_uiPos+=2; return *back; } LONG ReadS32Bit( void ) { LONG* back = (LONG*) (m_pData+m_uiPos); m_uiPos+=4; return *back; } ULONG ReadU32Bit( void ) { ULONG* back = (ULONG*) (m_pData+m_uiPos); m_uiPos+=4; return *back; } FLOAT ReadF32Bit( void ) { FLOAT* back = (FLOAT*) (m_pData+m_uiPos); m_uiPos+=4; return *back; } DOUBLE ReadD64Bit( void ) { DOUBLE* back = (DOUBLE*)(m_pData+m_uiPos); m_uiPos+=8; return *back; }
Dann habe ichs mal so probiert:
DOUBLE Test ( void ) { DOUBLE* back = static_cast<DOUBLE*>( (m_pData+m_uiPos) ); m_uiPos+=8; return *back; }
Aber das funtioniert nicht, weil er char* nicht nach double* casten kann(darf).
-
wenn du schon überall die Holzhammer Casts benutzt, warum nicht dann auch gleich an der richtigen Stelle?
reinterpret_cast<double*>(foo);
btw. scheint deine Shift-Taste zu klemmen. double float etc. werden klein geschrieben.
-
genau das habe ich gesucht, danke.
Meine Shifttaste klemmt nicht, ich schreib das nur so damit alles einheitlich aussieht und nicht mal ein int und dann wieder BYTE. Steht ja eh alles in der windows.h so drin warum dann nicht benutzten.
Gibts noch eine andere außer meine und deine Methode?