Hey allemaal,
Ik ben sinds kort bezig met het uitlezen van een wave bestand en daarbij ben ik tegen een probleem aangelopen. Mijn probleem is dat ik een array heb aangemaakt waarin ik alle samples wil opslaan. Deze samples zijn in dit geval 8 bit groot. De eerste paar samples zijn allemaal gelijk aan 0x80 en dus wou ik dit controleren. Daarvoor heb ik de volgende code geschreven.
Maar wat hier uitkomt is 0xFF FF FF 80. Door de enkele char uit te printen en de char die correspondeert met 0x80 zie ik dat deze gelijk zijn, dus zou het moeten kloppen.
Waar mijn vraag dus op neerkomt is hoe C++ een enkele char omzet in een geheel getal zodat er 3 bytes voor komen die allemaal gezet zijn. Ik zou juist verwachten dat dit 3 keer 0x00 zou zijn.
Ik ben sinds kort bezig met het uitlezen van een wave bestand en daarbij ben ik tegen een probleem aangelopen. Mijn probleem is dat ik een array heb aangemaakt waarin ik alle samples wil opslaan. Deze samples zijn in dit geval 8 bit groot. De eerste paar samples zijn allemaal gelijk aan 0x80 en dus wou ik dit controleren. Daarvoor heb ik de volgende code geschreven.
PHP:
char* data = new char[ aantal_samples ];
//...inlezen van wave bestand in data
for( int i=0; i<4; i++ )
cout << hex << (int)data[ i ];
Maar wat hier uitkomt is 0xFF FF FF 80. Door de enkele char uit te printen en de char die correspondeert met 0x80 zie ik dat deze gelijk zijn, dus zou het moeten kloppen.
Waar mijn vraag dus op neerkomt is hoe C++ een enkele char omzet in een geheel getal zodat er 3 bytes voor komen die allemaal gezet zijn. Ik zou juist verwachten dat dit 3 keer 0x00 zou zijn.