As I said the stream was open as binary.
That makes no difference. There are two concents.
Binary is just the opposite of text mode, which disables the implementation
specific end of line mapping (for example, \n to CR-LF mapping on some
systems).
The other concept is formatted versus unformatted I/O.
read does unformatted I/O, it just transfers a certain number of bytes
from the file to where you tell it.
Operator >> does formatted I/O. It reads the text characters from the
input stream and interprets them as a number. For example, it would
expect to see a '1' and then a '0' (and then some non numeric character)
to read a 10 from the file.