Lo que necesitas es una biyección $\alpha : \mathbb{N}^2 \to \mathbb{N}$ que es fácil de calcular tanto hacia delante como hacia atrás. Por ejemplo,
$$\begin{align} \mathbb{N}^2 \ni (m,n) & \quad\stackrel{\alpha}{\longrightarrow}\quad \frac{(m+n)(m+n+1)}{2} + m \in \mathbb{N}\\ \mathbb{N} \ni N & \quad\stackrel{\alpha^{-1}}{\longrightarrow}\quad (N - \frac{u(u+1)}{2},\frac{u(u+3)}{2} - N) \in \mathbb{N}^2, \end{align}$$ donde $u = \lfloor\sqrt{2N+\frac14}-\frac12\rfloor$ .
Una vez que se tiene dicha biyección, dada cualquier $k \ge 1$ números naturales $x_1, x_2, \ldots x_k$ se puede codificar en un único número natural como:
$$( x_1, \ldots, x_k ) \mapsto \alpha(k,\alpha(x_1,\alpha(\ldots,\alpha( x_{k-1}, x_{k} )))$$
Para descodificar este número, se aplica $\alpha^{-1}$ una vez para obtener $k$ y $\alpha(x_1,\alpha(\ldots,\alpha( x_{k-1}, x_{k} )))$ . Conocer $k$ , ya sabes cuántas veces tienes que aplicar $\alpha^{-1}$ a la segunda pieza y obtener todos los $x_k$ atrás.
Otros casos como:
- codificación de enteros con signo en lugar de sin signo
- permitir la codificación de un número cero de enteros
pueden tratarse de forma similar.