per quanto riguarda la mia seconda domanda, il problema è che se leggo un file di testo aprendolo in modalità binaria mi considera due caratteri e non uno.
Se leggi un file in modalità binaria ottieni gli esatti byte che si trovano nel file. Se invece leggi il file in modalità testo alcune sequenze di carattere possono essere modificate; il caso più frequente è la sequenza CrLf ("\r\n"), che letta sotto Windows viene tradotta in Lf ("\n").