La SD non è un hard disk con lo sketch fatto così rovini la sheda sd, hanno un limite di scrittura anche loro soprattutto se scrivi sempre nello stesso punto

Elimina il file
Crea il file
scrivi il byte
Elimina il file
Crea il file
scrivi il byte
...
...
perchè non lo fai nel setup, se è solo una prova
la SD è formattata in FAT??
metti questo controllo al posto di SD.begin(4)
if (! SD.begin(4)) {
Serial.println("Error cannot initialize SD card!");
}
qui dici:
ma non riesco nemmeno a scrivere e leggere correttamente una sola variabile
e poi subito dopo
aprendo il file con un editor esadecimale sembra scritto giusto, ma al momento di leggere non c'è verso di leggere il valore corretto.
Lo scrive il dato o non lo scrive?
sei sicuro che questo sketch fatto così ti crea il file?
ciao