| ... | ... | @@ -1753,6 +1753,14 @@ test "parseInt" { |
| 1753 | 1753 | try std.testing.expect((try parseInt(u8, "255", 10)) == 255); |
| 1754 | 1754 | try std.testing.expectError(error.Overflow, parseInt(u8, "256", 10)); |
| 1755 | 1755 | |
| 1756 | // Test different bases |
| 1757 | try std.testing.expect((try parseInt(i32, "0b10", 2)) == 0b10); |
| 1758 | try std.testing.expect((try parseInt(i32, "0o10", 8)) == 0o10); |
| 1759 | try std.testing.expect((try parseInt(i32, "0x10", 16)) == 0x10); |
| 1760 | try std.testing.expect((try parseInt(i32, "10", 2)) == 0b10); |
| 1761 | try std.testing.expect((try parseInt(i32, "10", 8)) == 0o10); |
| 1762 | try std.testing.expect((try parseInt(i32, "10", 16)) == 0x10); |
| 1763 | |
| 1756 | 1764 | // +0 and -0 should work for unsigned |
| 1757 | 1765 | try std.testing.expect((try parseInt(u8, "-0", 10)) == 0); |
| 1758 | 1766 | try std.testing.expect((try parseInt(u8, "+0", 10)) == 0); |
| ... | ... | @@ -1804,28 +1812,25 @@ fn parseWithSign( |
| 1804 | 1812 | |
| 1805 | 1813 | var buf_base = base; |
| 1806 | 1814 | var buf_start = buf; |
| 1807 | | if (base == 0) { |
| 1808 | | // Treat is as a decimal number by default. |
| 1809 | | buf_base = 10; |
| 1810 | | // Detect the base by looking at buf prefix. |
| 1811 | | if (buf.len > 2 and buf[0] == '0') { |
| 1812 | | switch (std.ascii.toLower(buf[1])) { |
| 1813 | | 'b' => { |
| 1814 | | buf_base = 2; |
| 1815 | | buf_start = buf[2..]; |
| 1816 | | }, |
| 1817 | | 'o' => { |
| 1818 | | buf_base = 8; |
| 1819 | | buf_start = buf[2..]; |
| 1820 | | }, |
| 1821 | | 'x' => { |
| 1822 | | buf_base = 16; |
| 1823 | | buf_start = buf[2..]; |
| 1824 | | }, |
| 1825 | | else => {}, |
| 1826 | | } |
| 1815 | |
| 1816 | if (buf.len > 2 and buf[0] == '0') { |
| 1817 | switch (std.ascii.toLower(buf[1])) { |
| 1818 | 'b' => { |
| 1819 | if (base == 0) buf_base = 2; |
| 1820 | buf_start = buf[2..]; |
| 1821 | }, |
| 1822 | 'o' => { |
| 1823 | if (base == 0) buf_base = 8; |
| 1824 | buf_start = buf[2..]; |
| 1825 | }, |
| 1826 | 'x' => { |
| 1827 | if (base == 0) buf_base = 16; |
| 1828 | buf_start = buf[2..]; |
| 1829 | }, |
| 1830 | else => {}, |
| 1827 | 1831 | } |
| 1828 | 1832 | } |
| 1833 | if (buf_base == 0) buf_base = 10; |
| 1829 | 1834 | |
| 1830 | 1835 | const add = switch (sign) { |
| 1831 | 1836 | .pos => math.add, |