Confused with meaning of reinterpret_cast

78 Views Asked by At

Clarification is needed with reinterpret_cast.

I am building .wav file where various data is inputted as 2 or 4 bytes in hexadecimal bits (if I am correct).

Then, I came across a simple function like this:

void writeToFile(std::ofstream &file, int value, int size)
{
    file.write(reinterpret_cast<char*>(&value), size);
}

As far as I understand what reinterpret_cast does is that it changes the data type in the address a pointer points to!

For example:

int* intPtr{ new int{7} };
char* charPtr{ reinterpret_cast<char*>(intPtr) };

So here we got a new pointer that is supposed to point to char value instead of original int.

If so, then I don't understand validity of the above function void writeToFile(std::ofstream &file, int value, int size), because if I follow my logic, then in this function an int value can't be written to file as the pointer supposedly points to char value, not int!

P.S. Even if a file is opened in std::ios::binary mode, how does it exactly work? How do bits of int become bits of char?

0

There are 0 best solutions below