What error do you observe?
It does feel a bit odd that newline (character position 10) is mapped to 'i' (lower-case I) when b is 0, but without specifications, we do not know that it is wrong.
Note that your function can emit characters beyond ~ if your input is ß (223) or beyond