Does anyone else think this should be fixed? import std.conv; void main() { string s1 = "ff"; string s2 = "0xff"; assert(parse!uint(s1, 16) == 0xff); // ok assert(parse!uint(s2, 16) == 0xff); // fail, it's 0 } I think parse should pop the first two characters if the string starts with 0x.