use crate::{arch::word::Word, primitive::WORD_BYTES, radix::DigitCase};
pub const DIGIT_CHUNK_LEN: usize = WORD_BYTES;
#[inline]
pub fn digit_chunk_raw_to_ascii(digits: &mut [u8; DIGIT_CHUNK_LEN], digit_case: DigitCase) {
let mut word = Word::from_ne_bytes(*digits);
const ALL_ONES: Word = Word::MAX / 0xff;
if digit_case != DigitCase::NoLetters {
let letters = ((0x76 * ALL_ONES + word) >> 7) & ALL_ONES;
word += letters * (digit_case as Word);
}
word += ALL_ONES * (b'0' as Word);
digits.copy_from_slice(&word.to_ne_bytes());
}