Bel quesito!
Guardando il codice che hai postato, ho notato che tu prevedi il trattamento di valori "1" o "0" fino ad un massimo di 32 ricorrenze, ma non mi sembra che li consideri vincolati a gruppi di almeno 4 crt (crt=caratteri) alla volta. Gambas contiene le seguenti funzioni di conversione attinenti al tuo quesito: Cint, CShort, Cfloat e CByte. Però tu hai la necessità di ottenere prima il valore binario puro corrispondente al valore di partenza contenuto nella variabile "c". Occorerebbe perciò come primo passo ottenere il valore binario puro corrispondente. Perciò, secondo me, a questo punto, potresti considerare un contatore numerico dove vai a sommare il risultato di ciascun valore immesso per la potenza di 2 corrispondenmte alla posizione del crt in trattamento.
Es.: Se il valore da trattare è 10010101, partendo dalla posizione all'estrema destra del valore, potresti fare:
1x2^0 +
0x2^1 +
1x2^2 +
0x2^3 +
1x2^4 +
0x2^5 +
0x2^6 +
1x2^7 +
=149 che tradotto in codice, potrebbe essere:
Dim b, e As Integer
Dim a As String
Dim Intero as Integer
Dim Esponente as Integer
'... bla ... bla ... bla ...
Esponente = 0
For b = Len(a) To 1 Step -1
crt=Int(Val(mid(a,b)))
Intero =crt*2^Esponente
Esponente += 1
next
Print Intero