Eftersom jag inte vet vilket programmeringsspråk du använder/vill använda så kan jag bara berätta hur du ska göra.
Om vi tar lite teori först. Allting i datorn lagras i bitar. En bit är en etta eller en nolla. Den har alltså två lägen (kombinationer), och det räcker inte så långt, utan man behöver fler bitar för att kunna göra något användbart. För varje bit man lägger till ökar antalet kombinationer med det dubbla. Två bitar, 2*2 = 4 kombinationer, fyra bitar = 2*2*2*2 = 16 kombinationer. Åtta bitar blir 256 kombinationer och det tyckte man verkade lagom att rymma alfabetet, siffror, specialtecken och diverse funktioner, så det beslutade man för att kalla en byte, ett tecken.
Varje tecken i datorn utgörs alltså egentligen av ett tal mellan 0 och 255, och det är det som lagras i dina filer. Att det ändå visas som bokstäver beror på att datorn har en tabell (så kallad ASCII-tabell) som den går efter där det står att exempelvis 65 ska visas som A och 100 som d. Nu får emellertid inte alla olika bokstäver för alla världens språk rum på bara 256 platser och därför finns det olika varianter av teckentabeller så varje land ska kunna ha sina bokstäver. Det är därför å, ä och ö kan se konstiga ut, för då använder du en annan teckentabell än den som texten skrevs med. Några exempel på teckentabeller är PC8-437, 850, ISO-8859-1 och UTF-8.
Alla tal mellan 0 och 255 utgör dock inte tecken utan 0-31 är reserverade för specialkoder, exempelvis enter, backsteg, escape, tab, null och eof (end-of-file). Dessa koder är ju inte avsedda att skrivas i text, utan de benämns non-printable characters. Om de skulle dyka upp lite hipp som happ när man tittar på en text så vore det inte så bra, för null används för att tala om att strängen slutar där och eof att filen slutar där, samtidigt som det också finns koder för att åstadkomma pip-ljud i högtalaren.
Men varför skulle då dessa koder dyka upp hipp som happ? Jo, om filen i fråga inte består av text, dvs att ettorna och nollorna står för något annat än bokstäver. Exempelvis en bild, en bmp-fil. I en bmp-fil står varje byte för hur mycket färg en bildpunkt på skärmen ska ha. Du kanske har stött på begreppet 24-bitars färg. Det innebär att 24 bitar används för färginformation, 8 bitar för mängden rött, 8 för grönt och 8 för blått. 0 betyder ingenting och 255 är max. Om du tar och skapar en ny bild i Paint och väljer en färg med värdet 65 på röd, 65 på grön och 65 på blå och sedan fyller hela bilden med den färgen och sparar den i BMP-format 24-bit, så kommer alltså den filen att fyllas med värdet 65. Om du nu öppnar den filen i Anteckningar så kommer den att tolkas som text, och som jag sagt tidigare så står 65 för bokstaven A i teckentabellen och du kommer alltså att få upp en massa A:n på skärmen...
Men om det hade varit någon svart punkt på bilden hade det blivit 0 och eftersom det ligger mellan 0 och 31 så är det inget tecken utan en kod, och då blir det inte alltid så bra. Anteckningar kan hantera det, men i e-post är det värre.
Hur gör man då om man vill skicka filer i e-post som kan innehålla "förbjudna" värden? (Det rör sig inte bara om BMP-filer med vissa färger i, utan alla bildfiler, ljudfiler och program.)
Jo, man måste ju på något sätt omvandla de farliga värdena till ofarliga. Vilka är ofarliga? A-Z, a-z och 0-9. Det blir 26+26+10 = 62 tecken. Lägger vi till ytterligare två tecken får vi 64 vilket är exakt lika med 2*2*2*2*2*2, dvs 6 bitar, och då blir det smidigt, för då blir principen enkel. Vi har ju våra ettor och nollor som vi normalt läser en byte i taget (dvs åtta i taget) och slår upp i en tabell (ASCII-tabellen) för att avgöra vad som ska visas på skärmen. Men nu kan vi alltså istället läsa sex i taget och använda en annan tabell. A-Z, a-z, 0-9 och så de två extra tecknen + och /
"Allt" du ska göra är alltså att läsa in sex bitar i taget, slå upp tecknet i tabellen och skriva ut det i e-postmeddelandet.
Du kan börja med att sätta upp den nya tabellen. Till det använder man en array. Vi kan kalla den base64:
base64[0] = 'A';
base64[1] = 'B';
..
base64[25] = 'Z';
base64[26] = 'a';
..
base64[51] = 'z';
base64[52] = '0';
..
base64[61] = '9';
base64[62] = '+';
base64[63] = '/';
Sedan är nog det enklaste att göra som din handledare skrivit att läsa in tre tecken och dela upp dem i fyra...
Formeln du har fått tar tre tecken (tkn1, tkn2, tkn3) och lägger ihop deras värden. Sedan görs talet till det oktala talsystemet, och där har man bara åtta siffror: 0-7. Eftersom åtta går jämnt upp i 2: 2*2*2 = 8, vilket alltså är tre bitar, så får det den fördelen att varje siffra utgör tre bitar. Och eftersom vi nu vill ha sex bitar så tar vi bara siffrorna två och två...
Vi gör om talet till vårt vanliga räknesystem med tio siffror genom att multiplicera första siffran med åtta och lägga till den andra. Sedan slår du bara upp det talet i tabellen och skriver ut det tecknet till e-postmeddelandet...