//! # Split numbers into bits and bytes //! //! Sometimes, you need a large integer in the form of many bytes, so split into [u8]. //! Rust provides use num_traits::Unsigned; /// split an integer into it's bytes, ignoring those bytes that would be all zero. /// /// If the integer is zero, the Vec contains a single null byte. pub fn unsigned_to_vec(mut num: T) -> Vec where T: Unsigned, T: std::ops::ShrAssign, T: std::cmp::PartialOrd, u8: std::convert::From, T: Copy, { if num == 0 { return vec![0]; } let mut buf: Vec = Vec::new(); while num > 0 { buf.push(num.into()); num >>= 8; } buf }