Base64-kooderi ja -purkaja: Muunna teksti Base64:ksi/ Base64:stä
Ilmainen online-työkalu tekstin koodamiseen Base64:ksi tai Base64-merkkijonojen purkamiseen takaisin tekstiksi. Tukee normaalia ja URL-turvallista Base64-koodausta välittömällä muunnoksella.
Base64-kooderi/Purku
Dokumentaatio
Base64-kooderi ja -dekooderi
Johdanto
Base64 on binaarista tekstiksi -koodausjärjestelmä, joka esittää binaaridataa ASCII-merkkijonomuodossa. Se on suunniteltu kuljettamaan binaarimuodossa tallennettua dataa kanavilla, jotka tukevat luotettavasti vain tekstisisältöä. Base64-koodaus muuntaa binaaridatan 64 merkin joukkoon (siksi nimi), joka voidaan siirtää turvallisesti tekstipohjaisten protokollien kautta ilman datakorruptiota.
Base64-merkkijoukko koostuu:
- Suurista kirjaimista A-Z (26 merkkiä)
- Pienistä kirjaimista a-z (26 merkkiä)
- Numeroista 0-9 (10 merkkiä)
- Kahdesta lisämerkistä, tyypillisesti "+" ja "/" (2 merkkiä)
Tämä työkalu mahdollistaa tekstin helpon koodauksen Base64-muotoon tai Base64-merkkijonojen dekoodauksen takaisin alkuperäiseen tekstiin. Se on erityisen hyödyllinen kehittäjille, IT-ammattilaisille ja kaikille, jotka työskentelevät datan kanssa, joka on siirrettävä turvallisesti tekstipohjaisten kanavien kautta. Reaaliaikaisen muunnosominaisuutemme avulla voit nähdä tulokset heti kirjoittaessasi, mikä tekee koodaus- ja dekoodausprosessistasi tehokkaamman.
Kuinka Base64-koodaus toimii
Koodausprosessi
Base64-koodaus toimii muuntamalla jokaisen kolmen tavun (24 bittiä) binaaridatan neljäksi Base64-merkkijonoksi. Prosessi etenee seuraavasti:
- Muunna syöteteksti sen binaariseen esitykseen (käyttäen ASCII- tai UTF-8-koodausta)
- Ryhmittele binaaridata 24 bitin paloihin (3 tavua)
- Jaa jokainen 24-bittinen pätkä neljään 6-bittiseen ryhmään
- Muunna jokainen 6-bittinen ryhmä vastaavaksi Base64-merkkijonoksi
Kun syötteen pituus ei ole jaollinen kolmella, lisätään "=" -merkkien avulla täydennystä, jotta 4:3 suhde tulosten ja syötteen pituuden välillä säilyy.
Matemaattinen esitys
Tavujonolle vastaavat Base64-merkit lasketaan seuraavasti:
Missä edustaa :ttä merkkiä Base64-aakkostossa.
Dekoodausprosessi
Base64-dekoodaus kääntää koodausprosessin:
- Muunna jokainen Base64-merkki sen 6-bittiseksi arvoksi
- Yhdistä nämä 6-bittiset arvot
- Ryhmittele bitit 8-bittisiin paloihin (tavut)
- Muunna jokainen tavu vastaavaksi merkiksi
Täydennys
Kun koodattavien tavujen määrä ei ole jaollinen kolmella, käytetään täydennystä:
- Jos jäljellä on yksi tavu, se muunnetaan kahdeksi Base64-merkkijonoksi, joiden jälkeen tulee "=="
- Jos jäljellä on kaksi tavua, ne muunnetaan kolmeksi Base64-merkkijonoksi, joiden jälkeen tulee "="
Esimerkki
Koodataan teksti "Hello" Base64-muotoon:
- "Hello":n ASCII-esitys: 72 101 108 108 111
- Binaariesitys: 01001000 01100101 01101100 01101100 01101111
- Ryhmittely 6-bittisiin paloihin: 010010 000110 010101 101100 011011 000110 1111
- Viimeinen pätkä sisältää vain 4 bittiä, joten täytämme nollilla: 010010 000110 010101 101100 011011 000110 111100
- Muuntaminen desimaaliksi: 18, 6, 21, 44, 27, 6, 60
- Etsiminen Base64-aakkostosta: S, G, V, s, b, G, 8
- Tulos on "SGVsbG8="
Huomaa "=" -täydennys lopussa, koska syötteen pituus (5 tavua) ei ole jaollinen kolmella.
Kaava
Yleinen kaava Base64-koodatun merkkijonon pituuden laskemiseen on:
Missä edustaa kattofunktiota (pyöristämistä ylöspäin lähimpään kokonaislukuun).
Base64-kooderi/dekooderi -työkalun käyttö
Base64-työkalumme tarjoaa yksinkertaisen ja tehokkaan tavan koodata teksti Base64-muotoon tai dekoodata Base64 takaisin tekstiksi. Tässä on ohjeet sen käyttöön:
Peruskäyttö
- Valitse toimintatila: Valitse "Koodaa" muuntaaksesi tekstin Base64:ksi tai "Dekoodaa" muuntaaksesi Base64:n takaisin tekstiksi.
- Syötä tietosi: Kirjoita tai liitä tekstisi tai Base64-merkkijonosi syöttökenttään.
- Muunna: Napsauta "Koodaa Base64:ksi" tai "Dekoodaa Base64:stä" -painiketta suorittaaksesi muunnoksen.
- Kopioi tulos: Käytä "Kopioi" -painiketta kopioidaksesi tuloksen leikepöydälle.
Reaaliaikainen muunnosominaisuus
Työkalumme sisältää nyt reaaliaikaisen muunnosvaihtoehdon, joka päivittää tuloksen samalla kun kirjoitat:
- Ota käyttöön Reaaliaikainen muunnos: Valitse "Reaaliaikainen muunnos" -valintaruutu työkalun yläosassa.
- Näe välittömät tulokset: Kun kirjoitat syöttökenttään, tulos päivittyy automaattisesti ilman, että sinun tarvitsee napsauttaa muunnospainiketta.
- Kytke päälle tai pois tarpeen mukaan: Voit ottaa tai poistaa reaaliaikaisen muunnoksen käytöstä milloin tahansa mieltymystesi mukaan.
Reaaliaikainen muunnosominaisuus on erityisen hyödyllinen, kun:
- Työskentelet lyhyiden tai keskikokoisten tekstien tai Base64-merkkijonojen kanssa
- Teet vähittäisiä muutoksia ja tarvitset välitöntä palautetta
- Tutkit, kuinka eri merkit koodataan/dekoodataan
- Opettelet Base64-koodauksen malleja
Erittäin suurten syötteiden kohdalla työkalu käyttää debouncing-tekniikkaa suorituskyvyn ylläpitämiseksi, varmistaen, että muunnos tapahtuu vain sen jälkeen, kun olet pysähtynyt hetkeksi kirjoittamisessa, eikä jokaisella näppäinpainalluksella.
Käyttötapaukset
Base64-koodaus on laajasti käytössä eri sovelluksissa:
-
Sähköpostiliitteet: MIME (Monimuotoiset Internet-sähköpostin laajennukset) käyttää Base64:ää binaaristen liitteiden koodamiseen sähköpostissa.
-
Data-URL:t: Pienten kuvien, fonttien tai muiden resurssien upottaminen suoraan HTML:ään, CSS:ään tai JavaScriptiin
data:
URL -kaavalla. -
API-viestintä: Binaaridatan turvallinen siirtäminen JSON-kuormissa tai muissa tekstipohjaisissa API-muodoissa.
-
Binaaridatan tallentaminen tekstimuodoissa: Kun binaaridata on tallennettava XML:ään, JSON:iin tai muihin tekstipohjaisiin muotoihin.
-
Todentamisjärjestelmät: Perustason todennus HTTP:ssä käyttää Base64-koodausta (vaikka se ei ole turvallisuutta, vain koodausta varten).
-
Salaus: Osana erilaisia salausprotokollia ja -järjestelmiä, usein avainten tai sertifikaattien koodauksessa.
-
Evästeiden arvot: Monimutkaisten tietorakenteiden koodaus evästeisiin tallentamista varten.
Vaihtoehdot
Vaikka Base64 on laajalti käytössä, on olemassa vaihtoehtoja, jotka saattavat olla sopivampia tietyissä tilanteissa:
-
URL-turvallinen Base64: Muunnos, joka käyttää "-" ja "_" "+" ja "/" sijasta välttääksesi URL-koodausongelmia. Hyödyllinen datalle, joka sisältyy URL-osoitteisiin.
-
Base32: Käyttää 32-merkkistä joukkoa, mikä johtaa pidempään tulokseen, mutta parempaan ihmisten luettavuuteen ja kirjainherkkyyteen.
-
Hex-koodaus: Yksinkertainen muunnos heksadesimaaliin, joka on vähemmän tehokasta (kaksinkertaistaa koon), mutta erittäin yksinkertainen ja laajasti tuettu.
-
Binaarisiirto: Suurille tiedostoille tai kun tehokkuus on kriittistä, suorat binaarisiirtoprotokollat, kuten HTTP, joissa on asianmukaiset Content-Type-otsikot, ovat suositeltavampia.
-
Pakkaus + Base64: Suurille tekstidatoille pakkaaminen ennen koodausta voi vähentää koon kasvua.
-
JSON/XML-serialisointi: Rakenteellisen datan osalta alkuperäisen JSON- tai XML-serialisoinnin käyttäminen voi olla sopivampaa kuin Base64-koodauksen käyttö.
Historia
Base64-koodaus juontaa juurensa varhaiseen tietojenkäsittelyyn ja telekommunikaatiojärjestelmiin, joissa binaaridataa tarvittiin siirrettäväksi tekstimuotoisilla kanavilla.
Base64:n virallinen määrittely julkaistiin ensimmäisen kerran vuonna 1987 osana RFC 989, joka määritteli yksityisen parannetun postin (PEM). Tätä päivitettiin myöhemmin RFC 1421:ssä (1993) ja RFC 2045:ssä (1996, osana MIMEa).
Termi "Base64" tulee siitä, että koodaus käyttää 64 erilaista ASCII-merkkiä edustamaan binaaridataa. Tämä 64 merkin valinta oli tarkoituksellista, koska 64 on kaksinkertainen (2^6), mikä tekee muunnoksesta binaarin ja Base64:n tehokasta.
Ajan myötä useita Base64:n muunnelmia on syntynyt:
- Standardi Base64: Kuten RFC 4648:ssä määritellään, käyttäen A-Z, a-z, 0-9, +, / ja = täydennyksenä
- URL-turvallinen Base64: Käyttää - ja _ "+" ja / sijasta välttääksesi URL-koodausongelmia
- Tiedostonimi-turvallinen Base64: Samankaltainen URL-turvallisen kanssa, suunniteltu käytettäväksi tiedostonimissä
- Muunneltu Base64 IMAP:lle: Käytetään IMAP-protokollassa eri erikoismerkkijoukon kanssa
Huolimatta siitä, että se on yli kolmekymmentä vuotta vanha, Base64 pysyy perustyökaluna nykyaikaisessa tietojenkäsittelyssä, erityisesti verkkosovellusten ja API:en nousun myötä, jotka nojaavat vahvasti tekstipohjaisiin tietomuotoihin, kuten JSON.
Koodiesimerkit
Tässä ovat esimerkit Base64-koodauksesta ja -dekoodauksesta eri ohjelmointikielillä:
1// JavaScript Base64-koodaus/dekoodaus
2function encodeToBase64(text) {
3 return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7 try {
8 return atob(base64String);
9 } catch (e) {
10 throw new Error("Virheellinen Base64-merkkijono");
11 }
12}
13
14// Esimerkkikäyttö
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Koodattu:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Dekoodattu:", decoded); // Hello, World!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Python Base64-koodaus/dekoodaus
2import base64
3
4def encode_to_base64(text):
5 # Muunna merkkijono tavuiksi ja koodaa
6 text_bytes = text.encode('utf-8')
7 base64_bytes = base64.b64encode(text_bytes)
8 return base64_bytes.decode('utf-8')
9
10def decode_from_base64(base64_string):
11 try:
12 # Muunna base64-merkkijono tavuiksi ja dekoodaa
13 base64_bytes = base64_string.encode('utf-8')
14 text_bytes = base64.b64decode(base64_bytes)
15 return text_bytes.decode('utf-8')
16 except Exception as e:
17 raise ValueError(f"Virheellinen Base64-merkkijono: {e}")
18
19# Esimerkkikäyttö
20original_text = "Hello, World!"
21encoded = encode_to_base64(original_text)
22print(f"Koodattu: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Dekoodattu: {decoded}") # Hello, World!
27except ValueError as e:
28 print(e)
29
1// Java Base64-koodaus/dekoodaus
2import java.util.Base64;
3import java.nio.charset.StandardCharsets;
4
5public class Base64Esimerkki {
6 public static String encodeToBase64(String text) {
7 byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
8 byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
9 return new String(encodedBytes, StandardCharsets.UTF_8);
10 }
11
12 public static String decodeFromBase64(String base64String) {
13 try {
14 byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
15 byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
16 return new String(decodedBytes, StandardCharsets.UTF_8);
17 } catch (IllegalArgumentException e) {
18 throw new IllegalArgumentException("Virheellinen Base64-merkkijono: " + e.getMessage());
19 }
20 }
21
22 public static void main(String[] args) {
23 String originalText = "Hello, World!";
24 String encoded = encodeToBase64(originalText);
25 System.out.println("Koodattu: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Dekoodattu: " + decoded); // Hello, World!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// PHP Base64-koodaus/dekoodaus
3function encodeToBase64($text) {
4 return base64_encode($text);
5}
6
7function decodeFromBase64($base64String) {
8 $decoded = base64_decode($base64String, true);
9 if ($decoded === false) {
10 throw new Exception("Virheellinen Base64-merkkijono");
11 }
12 return $decoded;
13}
14
15// Esimerkkikäyttö
16$originalText = "Hello, World!";
17$encoded = encodeToBase64($originalText);
18echo "Koodattu: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Dekoodattu: " . $decoded . "\n"; // Hello, World!
23} catch (Exception $e) {
24 echo "Virhe: " . $e->getMessage() . "\n";
25}
26?>
27
1// C# Base64-koodaus/dekoodaus
2using System;
3using System.Text;
4
5class Base64Esimerkki
6{
7 public static string EncodeToBase64(string text)
8 {
9 byte[] textBytes = Encoding.UTF8.GetBytes(text);
10 return Convert.ToBase64String(textBytes);
11 }
12
13 public static string DecodeFromBase64(string base64String)
14 {
15 try
16 {
17 byte[] base64Bytes = Convert.FromBase64String(base64String);
18 return Encoding.UTF8.GetString(base64Bytes);
19 }
20 catch (FormatException)
21 {
22 throw new FormatException("Virheellinen Base64-merkkijono");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hello, World!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Koodattu: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Dekoodattu: {decoded}"); // Hello, World!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Virhe: {e.Message}");
40 }
41 }
42}
43
1# Ruby Base64-koodaus/dekoodaus
2require 'base64'
3
4def encode_to_base64(text)
5 Base64.strict_encode64(text)
6end
7
8def decode_from_base64(base64_string)
9 begin
10 Base64.strict_decode64(base64_string)
11 rescue ArgumentError => e
12 raise "Virheellinen Base64-merkkijono: #{e.message}"
13 end
14end
15
16# Esimerkkikäyttö
17original_text = "Hello, World!"
18encoded = encode_to_base64(original_text)
19puts "Koodattu: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Dekoodattu: #{decoded}" # Hello, World!
24rescue StandardError => e
25 puts "Virhe: #{e.message}"
26end
27
1// Go Base64-koodaus/dekoodaus
2package main
3
4import (
5 "encoding/base64"
6 "fmt"
7)
8
9func encodeToBase64(text string) string {
10 return base64.StdEncoding.EncodeToString([]byte(text))
11}
12
13func decodeFromBase64(base64_string string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64_string)
15 if err != nil {
16 return "", fmt.Errorf("virheellinen Base64-merkkijono: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hello, World!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Koodattu:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Virhe:", err)
29 } else {
30 fmt.Println("Dekoodattu:", decoded) // Hello, World!
31 }
32}
33
1// Swift Base64-koodaus/dekoodaus
2import Foundation
3
4func encodeToBase64(_ text: String) -> String? {
5 if let data = text.data(using: .utf8) {
6 return data.base64EncodedString()
7 }
8 return nil
9}
10
11func decodeFromBase64(_ base64String: String) -> String? {
12 if let data = Data(base64Encoded: base64String) {
13 return String(data: data, encoding: .utf8)
14 }
15 return nil
16}
17
18// Esimerkkikäyttö
19let originalText = "Hello, World!"
20if let encoded = encodeToBase64(originalText) {
21 print("Koodattu: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Dekoodattu: \(decoded)") // Hello, World!
25 } else {
26 print("Virhe: Ei voitu dekoodata Base64-merkkijonoa")
27 }
28} else {
29 print("Virhe: Ei voitu koodata tekstiä")
30}
31
1' Excel VBA Base64-koodaus/dekoodaus
2' Huom: Tämä vaatii viittauksen Microsoft XML, v6.0
3Function EncodeToBase64(text As String) As String
4 Dim xmlObj As Object
5 Set xmlObj = CreateObject("MSXML2.DOMDocument")
6
7 Dim xmlNode As Object
8 Set xmlNode = xmlObj.createElement("b64")
9
10 xmlNode.DataType = "bin.base64"
11 xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
12
13 EncodeToBase64 = xmlNode.text
14
15 Set xmlNode = Nothing
16 Set xmlObj = Nothing
17End Function
18
19Function DecodeFromBase64(base64String As String) As String
20 On Error GoTo ErrorHandler
21
22 Dim xmlObj As Object
23 Set xmlObj = CreateObject("MSXML2.DOMDocument")
24
25 Dim xmlNode As Object
26 Set xmlNode = xmlObj.createElement("b64")
27
28 xmlNode.DataType = "bin.base64"
29 xmlNode.text = base64String
30
31 DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
32
33 Set xmlNode = Nothing
34 Set xmlObj = Nothing
35 Exit Function
36
37ErrorHandler:
38 DecodeFromBase64 = "Virhe: Virheellinen Base64-merkkijono"
39End Function
40
41' Käyttö taulukossa:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# R Base64-koodaus/dekoodaus
2# Vaatii 'base64enc'-paketin
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Muunna teksti raakatavuiksi, sitten koodaa
8 text_raw <- charToRaw(text)
9 base64_encoded <- base64encode(text_raw)
10 return(rawToChar(base64_encoded))
11}
12
13decode_from_base64 <- function(base64_string) {
14 tryCatch({
15 # Muunna base64-merkkijono raakatavuiksi, sitten dekoodaa
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Virheellinen Base64-merkkijono:", e$message))
21 })
22}
23
24# Esimerkkikäyttö
25original_text <- "Hello, World!"
26encoded <- encode_to_base64(original_text)
27cat("Koodattu:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Dekoodattu:", decoded, "\n") # Hello, World!
32}, error = function(e) {
33 cat("Virhe:", e$message, "\n")
34})
35
1% MATLAB Base64-koodaus/dekoodaus
2function demo_base64()
3 originalText = 'Hello, World!';
4
5 % Koodaa
6 encoded = encode_to_base64(originalText);
7 fprintf('Koodattu: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % Dekoodaa
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Dekoodattu: %s\n', decoded); % Hello, World!
13 catch e
14 fprintf('Virhe: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Muunna teksti uint8-tauluksi ja koodaa
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Dekoodaa base64-merkkijono uint8-tauluksi
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Virheellinen Base64-merkkijono');
31 end
32end
33
1// C Base64-koodaus/dekoodaus käyttäen OpenSSL:ia
2#include <stdio.h>
3#include <string.h>
4#include <openssl/bio.h>
5#include <openssl/evp.h>
6#include <openssl/buffer.h>
7#include <stdint.h>
8
9char* encode_to_base64(const char* input) {
10 BIO *bio, *b64;
11 BUF_MEM *bufferPtr;
12
13 b64 = BIO_new(BIO_f_base64());
14 bio = BIO_new(BIO_s_mem());
15 bio = BIO_push(b64, bio);
16
17 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
18 BIO_write(bio, input, strlen(input));
19 BIO_flush(bio);
20 BIO_get_mem_ptr(bio, &bufferPtr);
21
22 char* result = (char*)malloc(bufferPtr->length + 1);
23 memcpy(result, bufferPtr->data, bufferPtr->length);
24 result[bufferPtr->length] = '\0';
25
26 BIO_free_all(bio);
27
28 return result;
29}
30
31char* decode_from_base64(const char* input) {
32 BIO *bio, *b64;
33 size_t length = strlen(input);
34 char* buffer = (char*)malloc(length);
35
36 b64 = BIO_new(BIO_f_base64());
37 bio = BIO_new_mem_buf(input, -1);
38 bio = BIO_push(b64, bio);
39
40 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
41 int decoded_length = BIO_read(bio, buffer, length);
42
43 if (decoded_length <= 0) {
44 free(buffer);
45 BIO_free_all(bio);
46 return NULL; // Virheellinen Base64-syöte
47 }
48
49 buffer[decoded_length] = '\0';
50
51 BIO_free_all(bio);
52
53 return buffer;
54}
55
56int main() {
57 const char* original_text = "Hello, World!";
58
59 char* encoded = encode_to_base64(original_text);
60 printf("Koodattu: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Dekoodattu: %s\n", decoded); // Hello, World!
65 free(decoded);
66 } else {
67 printf("Virhe: Virheellinen Base64-merkkijono\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Rust Base64-koodaus/dekoodaus
2use base64::{encode, decode};
3use std::str;
4
5fn encode_to_base64(text: &str) -> String {
6 encode(text)
7}
8
9fn decode_from_base64(base64_string: &str) -> Result<String, String> {
10 match decode(base64_string) {
11 Ok(bytes) => {
12 match str::from_utf8(&bytes) {
13 Ok(text) => Ok(text.to_string()),
14 Err(e) => Err(format!("Virheellinen UTF-8-jakso: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Virheellinen Base64-merkkijono: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hello, World!";
23 let encoded = encode_to_base64(original_text);
24 println!("Koodattu: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Dekoodattu: {}", decoded), // Hello, World!
28 Err(e) => println!("Virhe: {}", e)
29 }
30}
31
JavaScript-toteutus reaaliaikaisella muunnoksella
Tässä on esimerkki siitä, kuinka voit toteuttaa reaaliaikaisen muunnosominaisuuden JavaScriptissä:
1// JavaScript-toteutus reaaliaikaisella muunnoksella
2const textInput = document.getElementById('text-input');
3const base64Output = document.getElementById('base64-output');
4const liveConversionCheckbox = document.getElementById('live-conversion');
5let debounceTimeout = null;
6
7// Toiminto koodaukselle debouncingin avulla suorituskyvyn vuoksi
8function liveEncode() {
9 // Tyhjennä kaikki olemassa olevat aikakatkaisut
10 if (debounceTimeout) {
11 clearTimeout(debounceTimeout);
12 }
13
14 // Aseta uusi aikakatkaisu estämään liiallinen käsittely nopeassa kirjoittamisessa
15 debounceTimeout = setTimeout(() => {
16 try {
17 const text = textInput.value;
18 if (text.trim()) {
19 base64Output.value = btoa(text);
20 } else {
21 base64Output.value = '';
22 }
23 } catch (e) {
24 console.error('Koodausvirhe:', e);
25 // Käsittele virhe asianmukaisesti käyttöliittymässä
26 }
27 }, 300); // 300 ms debouncing-viive
28}
29
30// Tapahtumakuuntelijat
31liveConversionCheckbox.addEventListener('change', function() {
32 if (this.checked) {
33 // Ota käyttöön reaaliaikainen muunnos
34 textInput.addEventListener('input', liveEncode);
35 // Alkuperäinen koodaus
36 liveEncode();
37 } else {
38 // Poista reaaliaikainen muunnos käytöstä
39 textInput.removeEventListener('input', liveEncode);
40 }
41});
42
Reunaehdot ja huomiot
Kun työskentelet Base64-koodauksen ja dekoodauksen kanssa, ota huomioon nämä tärkeät seikat:
-
Unicode- ja ei-ASCII-merkit: Kun koodaat tekstiä, jossa on ei-ASCII-merkkejä, varmista, että käytät oikeaa merkkikoodausta (yleensä UTF-8) ennen Base64-koodausta.
-
Täydennys: Standardi Base64 käyttää täydennystä "=" -merkeillä varmistaakseen, että tuloksen pituus on 4:n moninkertainen. Jotkut toteutukset sallivat täydennyksen jättämisen pois, mikä voi aiheuttaa yhteensopivuusongelmia.
-
Rivinvaihdot: Perinteiset Base64-toteutukset lisäävät rivinvaihtoja (tyypillisesti joka 76 merkki) luettavuuden vuoksi, mutta nykyaikaiset sovellukset jättävät usein nämä pois.
-
URL-turvallinen Base64: Standardi Base64 käyttää "+" ja "/" -merkkejä, joilla on erityisiä merkityksiä URL-osoitteissa. URL-konteksteissa käytä URL-turvallista Base64:ää, joka korvasi nämä "-" ja "_".
-
Valkoinen tila: Dekoodauksen yhteydessä jotkut toteutukset ovat armollisia ja ohittavat valkoisen tilan, kun taas toiset vaativat tarkkaa syötettä.
-
Koon kasvu: Base64-koodaus lisää datan kokoa noin 33 % (4 tulos tavua 3 syöte tavua kohden).
-
Suorituskyky: Base64-koodaus/dekoodaus voi olla laskennallisesti intensiivistä erittäin suurille tiedoille. Työkalumme käyttää debouncingia ylläpitääkseen reagointikykyä jopa suurilla syötteillä.
-
Reaaliaikaisen muunnoksen huomioitavat seikat: Kun käytät reaaliaikaista muunnosominaisuutta erittäin suurilla syötteillä, saatat huomata pienen viiveen, kun työkalu käsittelee dataa. Tämä on normaalia ja auttaa ylläpitämään selaimen suorituskykyä.
Usein kysytyt kysymykset
Mikä on Reaaliaikainen muunnosominaisuus?
Reaaliaikainen muunnosominaisuus päivittää tuloksen automaattisesti, kun kirjoitat, ilman että sinun tarvitsee napsauttaa koodaus- tai dekoodauspainiketta. Tämä antaa välitöntä palautetta ja tekee työkalusta interaktiivisemman ja tehokkaamman käyttää.
Hidastaako Reaaliaikainen muunnos selaintani suurilla syötteillä?
Toteituksemme käyttää debouncingia varmistaakseen hyvän suorituskyvyn jopa suurilla syötteillä. Muunnos tapahtuu vain sen jälkeen, kun olet pysähtynyt hetkeksi kirjoittamisessa, eikä jokaisella näppäinpainalluksella, mikä estää liiallisen käsittelyn nopeassa kirjoittamisessa.
Milloin minun pitäisi käyttää Reaaliaikaista muunnosta vs. manuaalista muunnosta?
Reaaliaikainen muunnos on ihanteellinen interaktiiviseen työhön, jossa haluat välitöntä palautetta. Erittäin suurten tietojoukkojen kohdalla tai kun haluat tarkastella syötettäsi ennen muunnosta, saatat mieluummin valita manuaalisen muunnosvaihtoehdon.
Toimiiko Reaaliaikainen muunnos sekä koodauksessa että dekoodauksessa?
Kyllä, Reaaliaikainen muunnosominaisuus toimii molempiin suuntiin - tekstistä Base64:ään ja Base64:stä tekstiin.
Mitä tapahtuu, jos syötän virheellistä Base64:ää Reaaliaikainen muunnos -tila päällä?
Jos syötät virheellisiä Base64-merkkejä dekoodausvaiheessa Reaaliaikainen muunnos -tila päällä, työkalu näyttää virheilmoituksen reaaliaikaisesti, mikä auttaa sinua tunnistamaan ja korjaamaan ongelman heti.
Viitteet
- RFC 4648 - Base16, Base32 ja Base64 -tietokoodaukset
- RFC 2045 - MIME Osa Yksi: Internet-viestien runkojen muoto
- MDN Web Docs: Base64-koodaus ja -dekoodaus
- Base64 - Wikipedia
- MIME - Wikipedia
Kokeile Base64-kooderi/dekooderi -työkalua tänään muuntaaksesi nopeasti tekstin ja Base64-muotojen välillä reaaliaikaisen muunnoksen mukavuudella. Olitpa kehittäjä, joka työskentelee API:en kanssa, käsittelee sähköpostiliitteitä tai upottaa binaaridataa tekstimuotoihin, työkalumme tekee prosessista yksinkertaisen ja tehokkaan.
Liittyvät Työkalut
Löydä lisää työkaluja, jotka saattavat olla hyödyllisiä työnkulullesi