string_to_num
以下示例将数字字符串转换成数字,若遇到非数字的字符,将提前结束转换。
- string_2_num
module cookbook::string_2_num {
public fun string_to_num(bytes: vector<u8>): u64 {
let mut num: u64 = 0;
let len = bytes.length();
let mut idx = 0;
while (len - idx > 0) {
// ASCII value of 0 is 48, ASCII value of 9 is 57
if (bytes[idx] >= 48 && bytes[idx] <= 57) {
num = num * 10 + ((bytes[idx] - 48) as u64);
} else {
break // Stop parsing when encountering a non-digit character
};
idx = idx + 1;
};
num
}
}
- string_2_num_tests
module cookbook::string_2_num_test {
use cookbook::string_2_num::{string_to_num};
#[test_only]
use sui::test_utils::assert_eq;
#[test]
fun test_string_2_num() {
let bytes = b"123456789";
let num = string_to_num(bytes);
assert_eq(num, 123456789);
let bytes = b"123456789123456789";
let num = string_to_num(bytes);
assert_eq(num, 123456789123456789);
let bytes = b"123456789ABCD";
let num = string_to_num(bytes);
assert_eq(num, 123456789);
}
}