arnaucube
arnaucube/evm-rsPublic Self-hosted repository
evm-rs/src/u256.rs
src/u256.rsRaw
 1use num_bigint::BigUint;
 2
 3pub fn u256_to_u64(a: [u8; 32]) -> u64 {
 4    let mut b8: [u8; 8] = [0; 8];
 5    b8.copy_from_slice(&a[32 - 8..32]);
 6    u64::from_be_bytes(b8)
 7}
 8pub fn usize_to_u256(i: usize) -> [u8; 32] {
 9    let i_bytes = i.to_be_bytes();
10    let mut r: [u8; 32] = [0; 32];
11    r[32 - i_bytes.len()..].copy_from_slice(&i_bytes);
12    r
13}
14pub fn str_to_u256(s: &str) -> [u8; 32] {
15    let bi = s.parse::<BigUint>().unwrap().to_bytes_be();
16    let mut r: [u8; 32] = [0; 32];
17    r[32 - bi.len()..].copy_from_slice(&bi[..]);
18    r
19}