Sul fatto che la lettura byte per byte possa darti risultati corretti invece di leggere il valore Cardinal tutto in una volta posso essere d'accordo, visto che - pare - ci sia un'interpretazione dei dati tale per cui i bit vengono invertiti.
Sul fatto che funzioni su alcuni file e invece su altri no...mmm...questo mi lascia alquanto dubbioso. Non c'è alcuna discriminazione tra un tipo di file e l'altro, poichè la lettura avviene appunto byte per byte considerando il file di tipo binario, anche se magari si tratta di un testo.
A proposito, che tipo di file stai cercando di leggere?