Add a char::to_digit function
This commit is contained in:
parent
4739942e74
commit
80c926c5e2
5 changed files with 40 additions and 10 deletions
|
|
@ -93,3 +93,12 @@ pure fn is_whitespace(c: char) -> bool {
|
|||
true
|
||||
} else if c == ch_no_break_space { true } else { false }
|
||||
}
|
||||
|
||||
pure fn to_digit(c: char) -> u8 {
|
||||
alt c {
|
||||
'0' to '9' { c as u8 - ('0' as u8) }
|
||||
'a' to 'z' { c as u8 + 10u8 - ('a' as u8) }
|
||||
'A' to 'Z' { c as u8 + 10u8 - ('A' as u8) }
|
||||
_ { fail; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,11 +112,7 @@ fn parse_buf(buf: [u8], radix: uint) -> int {
|
|||
}
|
||||
let n = 0;
|
||||
while true {
|
||||
let digit = alt buf[i] as char {
|
||||
'0' to '9' { buf[i] - ('0' as u8) }
|
||||
'a' to 'z' { 10u8 + buf[i] - ('a' as u8) }
|
||||
'A' to 'Z' { 10u8 + buf[i] - ('A' as u8) }
|
||||
};
|
||||
let digit = char::to_digit(buf[i] as char);
|
||||
if (digit as uint) >= radix {
|
||||
fail;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,11 +100,7 @@ fn parse_buf(buf: [u8], radix: uint) -> uint {
|
|||
let power = 1u;
|
||||
let n = 0u;
|
||||
while true {
|
||||
let digit = alt buf[i] as char {
|
||||
'0' to '9' { buf[i] - ('0' as u8) }
|
||||
'a' to 'z' { 10u8 + buf[i] - ('a' as u8) }
|
||||
'A' to 'Z' { 10u8 + buf[i] - ('A' as u8) }
|
||||
};
|
||||
let digit = char::to_digit(buf[i] as char);
|
||||
if (digit as uint) >= radix {
|
||||
fail;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue