Level shifting is used if a signal has to cross the border between parts of your circuit that run on different voltage levels.
This problem is so common, that a number of specialized ICs exists to solve it.
Unfortunately, whenever you need one none of these specialists is around. And having to stop tinkering just because of that is quite annoying.
Fortunately level shifting can also be achieved with some common parts, that are so versatile that we should always have a handful of them laying around.
I found the circuit in this application note.
Everything you need are:
- 2x 2N7000 MOSFETs
- 4x 10k Ohm resistors as pull-ups (if you don't have them anywhere on the bus already)
Without pull-ups on both sides it will not work. The application note has some more information on how to choose the right values for the resistors.