That's strange way to test if a character is '.'. Plus, I'd expect you to have to maintain some kind of state as to which site of the . you are, so you can decide whether to shift right or left in base radix. I wouldn't expect it to work without it.
(s[x]<='9' ? '0':'0'+7)
That expression could be clearer, do you really need to use a magic number there?
There's about a 0.01s difference between yours and mine, both iterating 100000 times.
Is there anything else i can do to make it faster? Except using a library.
Maybe there are some magical bitwise operations that can be applied?