This question is in two parts:
a. One, is it possible to make a bivariate function $f(a,b)$ that is one-to-one (e.g $f(a,b) \neq f(b,a) \neq f(c,d) \neq f(d,c)$ that gives one single number given two integers ($\mathbb{Z}^2 \rightarrow \mathbb{R}$)? The function should use operators (floor, $+$, $-$, etc. but not concatenation).
b. Is it possible to extend this function to $k$ variables ($\mathbb{Z}^k \rightarrow \mathbb{R}$)? The same thing should apply to this new function $g$ (one-to-one, operators are allowed, but nothing like concatenation)
You can use power of primes numbers $2^a3^b5^c\cdots$.
The main advantage is that it generalizes to $\mathbb Z^k$ for any $k$ without issue. Note also that this is a very recursive approach in that you can then define $2^{2^{a_1}3^{b_1}}3^{2^{a_2}3^{b_2}}$ and this is something which is often used theoretically speaking.
However if you prefer something growing slower (however for negative values of $a,b,c$ above, you get small numbers too...) what about a mapping $\mathbb Z^2\mapsto\mathbb Z$ for instance $f(x,y)=y+\frac 12(x+y-1)(x+y-2)$ followed by a mapping $\mathbb Z\mapsto \mathbb Q$ via the Stern-Brocot tree ?