pub fn to_bits_le(&self) -> [bool; 256] {
        let limbs = self.representative().limbs;
        let mut bits = [false; 256];

        for i in (0..4).rev() {
            let limb_bytes = limbs[i].to_le_bytes();
            let limb_bytes_starting_index = (3 - i) * 8;
            for (j, byte) in limb_bytes.iter().enumerate() {
                let byte_index = (limb_bytes_starting_index + j) * 8;
                for k in 0..8 {
                    let bit_index = byte_index + k;
                    let bit_value = (byte >> k) & 1 == 1;
                    bits[bit_index] = bit_value;
                }
            }
        }
        bits
    }
This follows the convention used by starknet-rs
crates/math/src/field/fields/fft_friendly/stark_252_prime_field.rs