You don't know how to convert a binary string of length n into a binary string of length n + 1?

I believe this is a correct grammar that produces allpositivenumbers. It is unambiguous because each intermediate string contains a single nonterminal.

I would use part (a) here. A nonnegative binary number is either a 0 or a 1 followed by a possibly empty binary string. So the following grammar should work.

S -> 0 | 1A

A -> 1A | 0A | empty