Finales/Virtuales/final-9511-2021-04-17/ej2.c
/**
 * @brief  Convierte la estructura de 40 bits en una cadena de caracteres en base 32.
 * @param  *serial_data: Puntero a la estructura de 40 bits
 * @param  s[9]: Array de caracteres para imprimir
 * @param  empty_chunks: Chunks vacios
 * @retval None
 */
@brief  Convierte la estructura de 40 bits en una cadena de caracteres en base 32.
@param  *serial_data: Puntero a la estructura de 40 bits
@param  s[9]: Array de caracteres para imprimir
@param  empty_chunks: Chunks vacios
@retval None
@brief Convierte la estructura de 40 bits en una cadena de caracteres en base 32 . @param * serial_data : Puntero a la estructura de 40 bits @param s [ 9 ] : Array de caracteres para imprimir @param empty_chunks : Chunks vacios @retval None
void base32_encoder(uint40_t *serial_data, char s[9], size_t empty_chunks) {
    if (serial_data == NULL)
        return;
    static const char BASE32_ALPHABET_LUT[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
    for (int i = 27, j = 0; i >= 2; i -= 5, j++)
        s[j] = BASE32_ALPHABET_LUT[(serial_data->hs >> i) & MASK_CHUNK];
    s[6] = BASE32_ALPHABET_LUT[(serial_data->hs & MASK_LAST_2BIT) << SHIFT_GAP | (serial_data->ls >> CHUNK_SIZE)];
    s[7] = BASE32_ALPHABET_LUT[(serial_data->ls & MASK_CHUNK)];
    for (size_t i = 0; i < empty_chunks; i++)
        s[7 - i] = '=';
    s[8] = '\0';
    base32_debug_encoder(serial_data, s, empty_chunks);
}
void base32_encoder ( uint40_t * serial_data , char s [ 9 ] , size_t empty_chunks ) { if ( serial_data == NULL ) return ; static const char BASE32_ALPHABET_LUT [ ] = " " ; for ( int i = 27 , j = 0 ; i >= 2 ; i -= 5 , j ++ ) s [ j ] = BASE32_ALPHABET_LUT [ ( serial_data -> hs >> i ) & MASK_CHUNK ] ; s [ 6 ] = BASE32_ALPHABET_LUT [ ( serial_data -> hs & MASK_LAST_2BIT ) << SHIFT_GAP | ( serial_data -> ls >> CHUNK_SIZE ) ] ; s [ 7 ] = BASE32_ALPHABET_LUT [ ( serial_data -> ls & MASK_CHUNK ) ] ; for ( size_t i = 0 ; i < empty_chunks ; i ++ ) s [ 7 - i ] = ' ' ; s [ 8 ] = ' \0 ' ; base32_debug_encoder ( serial_data , s , empty_chunks ) ; }
@brief  Convierte la estructura de 40 bits en una cadena de caracteres en base 32.
@brief Convierte la estructura de 40 bits en una cadena de caracteres en base 32 .
// 30 Bits (HS) // 2 Bits (HS) + 3 Bits (LS) // 5 Bits (LS)