There are many many different ADC chips available. Most major IC manufacturers make them - TI, Analog Devices, Maxim, to name but a few. There's literally thousands of different ADC chips available.
To convert an analog value into a digital value you need an ADC. It is possible to build an ADC out of simpler building blocks, and there are lots of different designs.
One of the simplest is a comparator and a sweeping voltage. It's not fast, but requires very few components.
Basically you have to generate an analog voltage from your Pi. This could be a filtered PWM signal, as long as it's well filtered and stable.
You then sweep that voltage from 0V up to 3.3V a step at a time, and use a comparator to compare that voltage to your incoming voltage. When your sweep voltage reaches the incoming voltage you then know what the incoming voltage is.
For best results you want a "Rail-to-Rail Input/Output" OP-Amp.
simulate this circuit – Schematic created using CircuitLab
You can also generate the sweep voltage using a DAC (Digital to Analog Converter). This can give a more reliable voltage than filtering PWM, and a simple one can be made from just resistors in the form of what is called an "R-2R Ladder" DAC. It requires one GPIO for each bit of resolution you want in your DAC:
simulate this circuit
The actual resistor values don't matter that much, as long as you have one set as exactly twice the resistance as the other set, so 1K/2K, 10K/20K, 4K/8K, etc. Also keep the resistors at no more than around 10% the input impedance of the op-amp you want to use. 1K/2K is simple enough to get hold of and a good value to use (Hint: 2K resistors could be two 1K resistors in series).
I will leave the rest to your imagination.