Output with the same length always
JavaScript (ES8), 33 bytes

Expects the input in the range of safe JS integers: \$-2^{53}\le n &lt; 2^{53}\$.

Returns a string of 76 characters.

n=&gt;btoa(n.toString(2)).padEnd(76)


Try it online!

How?

Step 1

The input is first converted to binary. This preserves the leading minus sign for negative numbers.

Examples:


123 → "1111011"
-77 → "-1001101"


Step 2

The resulting string is encoded in base-64.

It means that each block of 1 to 3 characters will be turned into a new block of 4 characters. This conversion is safe because none of the resulting blocks contain the forbidden symbols (digits or minus sign).

3-character blocks

"-10" -&gt; "LTEw" | "011" -&gt; "MDEx"
"-11" -&gt; "LTEx" | "100" -&gt; "MTAw"
"000" -&gt; "MDAw" | "101" -&gt; "MTAx"
"001" -&gt; "MDAx" | "110" -&gt; "MTEw"
"010" -&gt; "MDEw" | "111" -&gt; "MTEx"


A single final block of 1 or 2 characters has to be encoded if the length of the binary string is not a multiple of 3:

1-character blocks

"0"   -&gt; "MA==" | "1"   -&gt; "MQ=="


2-character blocks

"-1"  -&gt; "LTE=" | "10"  -&gt; "MTA="
"00"  -&gt; "MDA=" | "11"  -&gt; "MTE="
"01"  -&gt; "MDE=" | 


Step 3

The final output is padded with trailing spaces.