UUEncoding en C (9 / 10 paso)

Paso 9: Aplicar UUEncoding en C

Bueno, aquí es. Mi mala implementación de un UUEncoder en C.

La función tiene varias variables.

  1. UUE_data_array es un puntero a una matriz de uint8_t donde se almacenarán los caracteres codificados.
  2. hex_data_array es un puntero a una matriz de uint8_t que contiene los valores hexadecimales a codificar (para aprender donde conseguir mis datos hexadecimales, checkout otro de este glorioso post: fichero Intel HEX a matriz).
  3. tamaño de hex_data_array es un entero que representa cuántos bytes de datos pueden encontrarse en el hex_data_array.
  4. Una vez finalizada la función, devuelve los caracteres de ASCII UUE fueron creados. Esto significó para el análisis de la matriz UUE en un momento posterior.

Código enlace

  • 3-8: aquí, contorno en seudocódigo lo que quería hacer en esta función.
  • 17-25: trato con el carácter de comienzo de la primera línea. Lo hago comprobando si hexagonales datos que nos dio están mayor que el límite de la línea UUE, 45 bytes. Si es así, colocar una M como el carácter de inicio (45 + 32 = 77 = ASCII M). Si los datos que hemos dado están de menos de 45 bytes, vamos a calcular el carácter de inicio. Tomamos 65 bits del número de 8 bits que representa cuántos bytes están aquí, a continuación, agregar 32, esto nos dará nuestro carácter de inicio.
  • 30-96: este es el bucle principal donde se realiza el trabajo. Recorrer todos los datos hexadecimales nos facilitado codificación como vamos.
  • 33-48: el lazo aquí trata de 3 bytes de datos a la vez. También comprueba para ver si tenemos menos de 3 bytes a la izquierda, si es así, rellena el espacio restante con 0 (null).
  • 47: este índice se utiliza en combinación con el if instrucción encontró una líneas 82-90. Es en esencia el principio de repetición si declaración donde se determinó cuál será el carácter de inicio para esta línea.
  • 51-54: esto es donde la magia sucede. Aquí, estamos convirtiendo los 3 bytes de 8 bits, en 4 octetos de bits 6. Almacenamos los bits resultantes en una variable de 8 bits. Pero recuerde, podemos poner datos de 6 bits en un tarro de 8 bits, como recordamos tener cuidado cómo ponemos los bits.
  • 56-69: los caracteres de 6 bits resultantes se comprueban para ver si son un carácter de espacio (0 x 20), si son, convierten en una tumba ' ' ' carácter (0x60). Si no tienen un espacio, sumamos 32 en el valor decimal (' ' = 32 en decimal), esto completa la codificación process.72: calculamos cuántos bytes de datos se quedan, en preparación para el cálculo de carácter de comienzo de la línea siguiente.
  • 74-96: este circuito tiene dos propósitos. Uno, para colocar un carácter de nueva línea ('\n') al final de nuestra última línea codificada. Dos, para calcular y cargar la siguiente línea comienzan carácter.
  • 96: cuando hemos llegado al final de nuestros datos, nos Coloque un carácter de nueva línea para marcar el final.
  • 112: nos devuelve el número de caracteres ASCII para representar nuestros datos codificados.

Artículos Relacionados

NbXOR80 un texto basado en cifrado

NbXOR80 un texto basado en cifrado

Me ha interesado en el cifrado de la mayor parte de mi vida, pero sólo en los últimos 16 años, o que buena información ha comenzado a ser más disponibles para el estudio casual de cifrado fuerte. Recientemente varios individuos prominentes públicamen