How to measure high DC voltage by micro-controller with an integrated approach?
While others have suggested linear optocouplers and voltage dependent oscillators, I'll throw a very different method out as an answer to read high voltages with very high isolation. 

I've used this in fully floating front ends up to around 56V. It should work for any voltage you can get a suitable transformer for. 

In the schematic below I've created a short pulse driving a FET. When the FET is ON, the transformer ratio is the attenuator. I've previously used small audio transformer because they have high inductance primaries, but I'd suggest you could use small DC-DC converter transformers just as successfully. 

The transformer used here is most like this with an 18:1 turns ratio and about 6mH primary inductance. The transformer turns ratio is of course very stable with temp/time so makes an excellent attenuator. 







simulate this circuit &ndash; Schematic created using CircuitLab

You could expect waveforms like this:



With the rather low primary inductance here, the current rises to 80mA quite rapidly. If you can find a transformer with a 20-50mH primary then the peak current is reduced and the time you can activate the FET made longer. 

If you are using an Arduino then by default the A/D takes 104us per conversion. The pulse width in this circuit would therefore require a sample and hold to capture the stable output voltage. But if you can find a better transformer, then you might be able to hold the FET on for more than 15us so not require the external sample/hold (the ATMega328 has about 12us sample time for the internal S/H). It all depends on what you want as an acceptable input current peak in the transformer primary.

You obviously have to provide an isolated drive for the FET, but there are plenty of pulse transformers for this application that could be driven from the Arduino.