Comparators maintain signal strength. You can use a comparator line as IceFreez3r suggested. The comparator line can be made instant using some tricks:
When a comparator is updated (for example when you power it), it calculates the signal strength it should output. If this calculated signal strength differs from the one it is outputting currently, it will schedule a so called tile tick.
This tile tick is simply a way the comparator can ask the game to execute some behaviour later, in this case 2 game ticks (1 redstone tick) later.
When the tile tick is processed, that is, after the 2 game ticks have passed, the comparator calculates the output signal strength again based on the current inputs and finally outputs it. This signal strength can be different from the one the comparator calculated before scheduling the tile tick and, in fact, it often is.
This the reason comparators do not react to signals from observers or 0-tick generators. By the time the comparator actually tries to change the output the signal is not there.
However we can use this to our advantage: If we update the comparators in our line in order using, for example, observers, and then supply the signal we want to transmit we can get an instant comparator line. Here the output that is calculated at first differs from the one that is finally used too.
So normally you would have first comparator register your signal, wait 2 game ticks, send it to the next comparator and so on, having each comparator add 2 game ticks to the delay. In the instant comparator setup, all comparators are updated in the first tick, then all wait 2 game ticks, and then they pass the signal throughout the third tick. (The comparators all fire in the same game tick, but nevertheless in order.)
Alternatively, you could, of course, also convert the signal to binary as others have suggested.