Closed
Description
...when the radix is a power of 2. e.g. 100 1's is an invalid u64
/i64
in any base, but for powers of 2 it gives a "correct" parse:
static hundred_ones: &'static str = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
fn main() {
for uint::range(2, 37) |i| {
io::println(
fmt!("%u %? %?", i,
u64::from_str_radix(hundred_ones, i),
i64::from_str_radix(hundred_ones, i)));
}
}
outputs
2 Some(18446744073709551615) None
3 None None
4 Some(6148914691236517205) Some(6148914691236517205)
5 None None
6 None None
7 None None
8 Some(10540996613548315209) None
9 None None
10 None None
11 None None
12 None None
13 None None
14 None None
15 None None
16 Some(1229782938247303441) Some(1229782938247303441)
17 None None
18 None None
19 None None
20 None None
21 None None
22 None None
23 None None
24 None None
25 None None
26 None None
27 None None
28 None None
29 None None
30 None None
31 None None
32 Some(1190112520884487201) Some(1190112520884487201)
33 None None
34 None None
35 None None
36 None None
Metadata
Metadata
Assignees
Labels
No labels