num_to_string
以下示例将数字转换成字节数组,再通过调用to_ascii_string()
方法转换成数字字符串。
- num_2_string
module cookbook::num_2_string {
public fun u8_to_string(num: u8): vector<u8> {
return num_to_string(num as u64)
}
public fun u16_to_string(num: u16): vector<u8> {
return num_to_string(num as u64)
}
public fun u32_to_string(num: u32): vector<u8> {
return num_to_string(num as u64)
}
public fun u64_to_string(num: u64): vector<u8> {
return num_to_string(num)
}
public fun num_to_string(mut num: u64): vector<u8> {
if (num == 0) {
return b"0"
};
let mut bytes = vector::empty<u8>();
while (num > 0) {
let remainder = num % 10; // get the last digit
num = num / 10; // remove the last digit
vector::push_back(&mut bytes, (remainder as u8) + 48); // ASCII value of 0 is 48
};
vector::reverse(&mut bytes);
return bytes
}
}
- num_2_string_tests
module cookbook::num_2_string_test {
use cookbook::num_2_string::{u8_to_string, u16_to_string, u32_to_string, u64_to_string};
#[test_only]
use sui::test_utils::assert_eq;
#[test]
fun test_num_2_string() {
let num: u8 = 255;
let output = u8_to_string(num);
assert_eq(output.to_ascii_string(), b"255".to_ascii_string());
let num: u16 = 12345;
let output = u16_to_string(num);
assert_eq(output.to_ascii_string(), b"12345".to_ascii_string());
let num: u32 = 123456789;
let output = u32_to_string(num);
assert_eq(output.to_ascii_string(), b"123456789".to_ascii_string());
let num: u64 = 123456789123456789;
let output = u64_to_string(num);
assert_eq(output.to_ascii_string(), b"123456789123456789".to_ascii_string());
}
}