UUEncoding in C (9 / 10 stap)

Stap 9: Implementeren UUEncoding in C

Nou, is hier het. Mijn nagemaakte uitvoering van een UUEncoder in C.

De functie neemt meerdere variabelen.

  1. UUE_data_array is een aanwijzer naar een matrix uint8_t waar de gecodeerde tekens worden opgeslagen.
  2. hex_data_array is een aanwijzer naar een matrix van de uint8_t met de hexadecimale waarden moeten worden gecodeerd (om te leren waar ik mijn hexadecimale gegevens, kassa een andere één van deze inglorious post: Intel HEX bestand aan Array).
  3. de grootte van de hex_data_array is een geheel getal dat aangeeft hoeveel bytes aan gegevens kunnen gevonden worden in de hex_data_array.
  4. Nadat de functie voltooid is, retourneert het hoeveel UUE ASCII-tekens zijn gemaakt. Dit is bedoeld voor het ontleden van de bijgevoegde UUE-array op een later tijdstip.

Code Link

  • 3-8: hier, ik schetsen in pseudo-code wat ik wilde doen in deze functie.
  • 17-25: ik omgaan met het teken van de start van de eerste regel. Ik doe dit door het controleren als hexadecimale gegevens die wij werden overhandigd meer dan het maximum van de lijn van bijgevoegde UUE, 45 bytes is. Als er, plaats ik een M als het teken van de start (45 + 32 = 77 = ASCII M). Als de gegevens die we hebben ingeleverd minder dan 45 bytes is, laten we berekenen de start karakter. Nemen we 65 bits van het 8-bits getal voor hoeveel bytes zijn hier, voeg dan 32, dat zal ons ons start karakter geven.
  • 30-96: dit is de hoofdlus waar het werk wordt gedaan. We doorlopen alle de hexadecimale gegevens ons verstrekt, als we gaan-codering.
  • 33-48: de lus hier behandelt 3 bytes aan gegevens tegelijkertijd. Het controleert ook dat als er minder dan 3 bytes links, zo ja, het pads de resterende ruimte met 0 (null).
  • 47: deze index wordt gebruikt in combinatie met de als verklaring gevonden één lijnen 82-90. Het is in essentie het begin herhalen als verklaring waar wij bepaald wat het teken van de start voor deze regel zal worden.
  • 51-54: dit is waar de magie gebeurt. Hier draaien we de 3 bytes van 8 bits, in 4 bytes van 6 beetjes. De resulterende bits slaan we in een 8-bits variabele. Maar vergeet niet, kunnen we 6 bits gegevens in een 8 bit pot, zolang we herinneren voorzichtig zijn hoe wij de plaats van de bits.
  • 56-69: de resulterende 6-bits tekens worden gecontroleerd om te zien of ze een spatie (0x20), als ze zijn, we zetten ze in een graf "'" teken (0x60). Als ze niet een ruimte, we 32 toevoegen aan de decimale waarde (' ' = 32 in decimale notatie), deze vult de codering process.72: wij berekenen hoeveel gegevensbytes worden overgelaten, in voorbereiding voor de berekening van de volgende lijn start karakter.
  • 74-96: deze lus dient twee doelen. Ten eerste, om een nieuwe-lijn-teken ('\n') aan het einde van onze laatste gecodeerde lijn. Twee, om te berekenen en laden van de volgende regel beginnen met karakter.
  • 96: als we het einde van onze gegevens bereikt, plaatsen we een nieuwe-lijn-teken om het einde te markeren.
  • 112: we het aantal ASCII-tekens gebruikt voor onze gecodeerde gegevens als resultaat geven.

Gerelateerde Artikelen

NbXOR80 een tekst op basis van codering

NbXOR80 een tekst op basis van codering

Ik heb geïnteresseerd geweest in codering voor de meeste van mijn leven, maar het alleen in de afgelopen 16 jaar of zo, dat goede informatie is begonnen meer beschikbaar voor de casual studie van sterke codering. Diverse prominente personen hebben on