pub fn to_be_bytes(mut val: u128) -> Vec<u8> {
let mut bytes: Vec<u8> = Vec::new();
if val == 0 {
bytes.push(0);
} else {
while val != 0 {
bytes.push((val % 256) as u8);
val = val >> 8;
}
}
bytes.reverse();
bytes
}
pub fn from_be_bytes(bytes: &[u8]) -> u128 {
let mut val = 0;
for i in 0..bytes.len() {
val = (val << 8) | (bytes[i] as u128);
}
val
}
pub fn from_be_digits(digits: &[u8], radix: u32) -> u128 {
let mut acc: u128 = 0;
let mut base: u128 = 1;
for i in (0..digits.len()).rev() {
let d = digits[i] as u128;
acc = acc + (d * base);
if i > 0 {
base = base * (radix as u128);
}
}
acc
}