( returns negative value on error ) : _ ( c -- n ) DUP '0' '1' =><= IF '0' - EXIT THEN DROP -1 ( bad ) ; : _pb ( a -- n f, parse binary ) ( '0': ASCII 0x30 'b': 0x62 0x6230 ) DUP 1+ @ 0x6230 = NOT IF 0 EXIT THEN ( a 0 ) ( We have "0b" prefix ) DUP C@ ( a len ) 0 SWAP 1+ ( len+1 ) 3 DO ( a r ) OVER I + C@ ( a r c ) _ ( a r n ) DUP 0< IF 2DROP 0 UNLOOP EXIT THEN SWAP 1 LSHIFT + ( a r*2+n ) LOOP NIP 1 ;