contract c { uint a; function charAt(bytes32 b, uint char) returns (bytes1) { return bytes1(uint8(uint(b) / (2**((31 - char) * 8)))); } function parseDecimal(bytes32 byteString) returns (uint r) { uint n = uint(byteString); for (uint b = 0; b < 32; b ++) { var c = uint8(charAt(byteString, b)); if (c < uint8('0') || c > uint8('9')) return; r = r * 10 + c - uint8('0'); } } }