I'd like to find an injection $\mathcal{P}(\{0,1\}^*)\to[0,1]$.
By $\mathcal{P}(\{0,1\}^*)$ I mean the powerset of the set of finite sequences over the numbers $0$ and $1$ and by $[0,1]$ I mean the interval of real numbers.
In theoretical computer science $\mathcal{P}(\{0,1\}^*)$ is also known as the set of languages over the alphabet $\{0,1\}$. Proving this injection is one part of proving that $|\mathcal{P}(\{0,1\}^*)|=|[0,1]|$.
Here's what I have done so far:
I build an infinite table $[a_{ij}]_{i,j=1,\ldots,\infty}$. The column labels of the table are the elements of $\{0,1\}^*$ (words) in their canonical order and the row labels are specific subsets (languages) in $\mathcal{P}(\{0,1\}^*)$.
Note: I'm not sure if I'm allowed to use the elements of $\mathcal{P}(\{0,1\}^*)$ as row labels, since I know that they are not enumerable - I'm not sure if this is a problem or not. Assuming not, lets continue:
Now for every row $i$ (language), we let $a_{ij}=1$ if the $j$-th word $w_j\in \{0,1\}^*$ (in canonical order) is in that set (language) and $a_{ij}=0$ otherwise.
So every row is just an infinite bit-string indicating which words are in the language. And we know that for different languages the bit-string will be different. Then for every language we take that bit string $s$ (row) and map it as follows:
$s\mapsto Number(0.s)\in[0,1]$, where $0.s$ is the binary representation of a real number.
The problem with this solution is that it's not an injection. For example the languages specified by the infinite bit-strings $1\overline{0}=10000000000\ldots$ and $0\overline{1}=011111111111111\ldots$ are clearly different, but they will map to the same real number $\frac{1}{2}$, since in binary $0.1\overline{0} = 0.0\overline{1}$.
Is there a solution to fix this? Or do you have another idea for the construction of an injection?