Kodowanie i dekodowanie Base64: Konwertuj tekst na/ze Base64
Darmowe narzędzie online do kodowania tekstu na Base64 lub dekodowania ciągów Base64 z powrotem na tekst. Obsługuje standardowe i bezpieczne dla URL kodowanie Base64 z natychmiastową konwersją.
Kodownik/ Dekodownik Base64
Dokumentacja
Kodowanie i dekodowanie Base64
Wprowadzenie
Base64 to schemat kodowania binarnego na tekst, który reprezentuje dane binarne w formacie ciągu znaków ASCII. Został zaprojektowany do przesyłania danych przechowywanych w formatach binarnych przez kanały, które niezawodnie obsługują tylko treści tekstowe. Kodowanie Base64 konwertuje dane binarne na zestaw 64 znaków (stąd nazwa), które można bezpiecznie przesyłać przez protokoły oparte na tekście bez uszkodzenia danych.
Zestaw znaków Base64 składa się z:
- Wielkich liter A-Z (26 znaków)
- Małych liter a-z (26 znaków)
- Cyfr 0-9 (10 znaków)
- Dwóch dodatkowych znaków, zazwyczaj "+" i "/" (2 znaki)
To narzędzie pozwala łatwo kodować tekst do formatu Base64 lub dekodować ciągi Base64 z powrotem do ich oryginalnego tekstu. Jest szczególnie przydatne dla programistów, specjalistów IT oraz każdego, kto pracuje z danymi, które muszą być przesyłane bezpiecznie przez kanały oparte na tekście. Dzięki naszej funkcji konwersji w czasie rzeczywistym możesz natychmiast zobaczyć wyniki podczas pisania, co sprawia, że Twój proces kodowania i dekodowania jest bardziej efektywny.
Jak działa kodowanie Base64
Proces kodowania
Kodowanie Base64 działa poprzez konwersję każdej grupy trzech bajtów (24 bity) danych binarnych na cztery znaki Base64. Proces ten przebiega według następujących kroków:
- Przekształć wprowadzony tekst na jego reprezentację binarną (używając kodowania ASCII lub UTF-8)
- Grupuj dane binarne w kawałki po 24 bity (3 bajty)
- Podziel każdą grupę 24-bitową na cztery grupy 6-bitowe
- Przekształć każdą grupę 6-bitową na odpowiadający znak Base64
Gdy długość wejścia nie jest podzielna przez 3, dodawanie znaków "=" jest stosowane w celu utrzymania proporcji 4:3 długości wyjścia do długości wejścia.
Reprezentacja matematyczna
Dla sekwencji bajtów , odpowiadające znaki Base64 są obliczane jako:
Gdzie reprezentuje -ty znak w alfabecie Base64.
Proces dekodowania
Dekodowanie Base64 odwraca proces kodowania:
- Przekształć każdy znak Base64 na jego wartość 6-bitową
- Połącz te wartości 6-bitowe
- Grupuj bity w kawałki 8-bitowe (bajty)
- Przekształć każdy bajt na odpowiadający znak
Dodawanie
Gdy liczba bajtów do zakodowania nie jest podzielna przez 3, stosuje się dodawanie:
- Jeśli pozostał jeden bajt, jest on przekształcany na dwa znaki Base64, a następnie dodawane są "=="
- Jeśli pozostały dwa bajty, są one przekształcane na trzy znaki Base64, a następnie dodawany jest "="
Przykład
Zakodujmy tekst "Hello" do Base64:
- Reprezentacja ASCII "Hello": 72 101 108 108 111
- Reprezentacja binarna: 01001000 01100101 01101100 01101100 01101111
- Grupowanie w kawałki 6-bitowe: 010010 000110 010101 101100 011011 000110 1111
- Ostatni kawałek ma tylko 4 bity, więc dodajemy zera: 010010 000110 010101 101100 011011 000110 111100
- Konwertowanie na dziesiętne: 18, 6, 21, 44, 27, 6, 60
- Szukanie w alfabecie Base64: S, G, V, s, b, G, 8
- Wynik to "SGVsbG8="
Zauważ, że na końcu znajduje się "=" jako dodatek, ponieważ długość wejścia (5 bajtów) nie jest podzielna przez 3.
Wzór
Ogólny wzór na obliczenie długości ciągu zakodowanego w Base64 to:
Gdzie reprezentuje funkcję sufitową (zaokrąglanie w górę do najbliższej liczby całkowitej).
Korzystanie z narzędzia kodera/dekodera Base64
Nasze narzędzie Base64 zapewnia prosty i efektywny sposób kodowania tekstu do Base64 lub dekodowania Base64 z powrotem do tekstu. Oto jak z niego korzystać:
Podstawowe użycie
- Wybierz tryb operacji: Wybierz "Koduj", aby przekształcić tekst na Base64, lub "Dekoduj", aby przekształcić Base64 z powrotem na tekst.
- Wprowadź swoje dane: Wpisz lub wklej swój tekst lub ciąg Base64 w polu wejściowym.
- Konwertuj: Kliknij przycisk "Koduj do Base64" lub "Dekoduj z Base64", aby przeprowadzić konwersję.
- Skopiuj wynik: Użyj przycisku "Kopiuj", aby skopiować wynik do schowka.
Funkcja konwersji na żywo
Nasze narzędzie zawiera teraz opcję konwersji na żywo, która aktualizuje wynik w miarę pisania:
- Włącz konwersję na żywo: Zaznacz pole wyboru "Konwersja na żywo" na górze narzędzia.
- Zobacz natychmiastowe wyniki: W miarę pisania w polu wejściowym wynik będzie aktualizowany automatycznie bez potrzeby klikania przycisku konwersji.
- Przełączaj w razie potrzeby: Możesz włączać lub wyłączać konwersję na żywo w dowolnym momencie w zależności od swoich preferencji.
Funkcja konwersji na żywo jest szczególnie przydatna, gdy:
- Pracujesz z krótkim lub średniej długości tekstem lub ciągami Base64
- Wprowadzasz stopniowe zmiany i potrzebujesz natychmiastowej informacji zwrotnej
- Eksplorujesz, jak różne znaki są kodowane/dekodowane
- Uczysz się wzorców kodowania Base64
Dla bardzo dużych wejść narzędzie używa opóźnienia, aby zachować wydajność, zapewniając, że konwersja odbywa się tylko po krótkim wstrzymaniu pisania, a nie przy każdym naciśnięciu klawisza.
Przykłady użycia
Kodowanie Base64 jest szeroko stosowane w różnych aplikacjach:
-
Załączniki e-mail: MIME (Multipurpose Internet Mail Extensions) używa Base64 do kodowania binarnych załączników w e-mailach.
-
Adresy URL danych: Osadzanie małych obrazów, czcionek lub innych zasobów bezpośrednio w HTML, CSS lub JavaScript za pomocą schematu URL
data:
. -
Komunikacja API: Bezpieczne przesyłanie danych binarnych w ładunkach JSON lub innych tekstowych formatach API.
-
Przechowywanie danych binarnych w formatach tekstowych: Gdy dane binarne muszą być przechowywane w XML, JSON lub innych formatach opartych na tekście.
-
Systemy uwierzytelniania: Podstawowe uwierzytelnianie w HTTP używa kodowania Base64 (choć nie dla bezpieczeństwa, tylko dla kodowania).
-
Kryptografia: Jako część różnych protokołów i systemów kryptograficznych, często do kodowania kluczy lub certyfikatów.
-
Wartości ciasteczek: Kodowanie złożonych struktur danych do przechowywania w ciasteczkach.
Alternatywy
Chociaż Base64 jest szeroko stosowane, istnieją alternatywy, które mogą być bardziej odpowiednie w niektórych sytuacjach:
-
Base64 bezpieczne dla URL: Wariant, który używa "-" i "_" zamiast "+" i "/", aby uniknąć problemów z kodowaniem URL. Przydatne dla danych, które będą zawarte w adresach URL.
-
Base32: Używa zestawu 32 znaków, co skutkuje dłuższym wyjściem, ale lepszą czytelnością dla ludzi i brakiem rozróżnienia wielkości liter.
-
Kodowanie szesnastkowe: Prosta konwersja do szesnastkowego, która jest mniej wydajna (podwaja rozmiar), ale bardzo prosta i szeroko wspierana.
-
Przesyłanie binarne: Dla dużych plików lub gdy wydajność jest kluczowa, preferowane są bezpośrednie protokoły przesyłania binarnego, takie jak HTTP z odpowiednimi nagłówkami Content-Type.
-
Kompresja + Base64: Dla dużych danych tekstowych kompresja przed kodowaniem może zminimalizować wzrost rozmiaru.
-
Serializacja JSON/XML: Dla danych strukturalnych użycie natywnej serializacji JSON lub XML może być bardziej odpowiednie niż kodowanie Base64.
Historia
Kodowanie Base64 ma swoje korzenie w wczesnych systemach komputerowych i telekomunikacyjnych, w których dane binarne musiały być przesyłane przez kanały zaprojektowane do tekstu.
Formalna specyfikacja Base64 została po raz pierwszy opublikowana w 1987 roku jako część RFC 989, która definiowała Prywatną Zwiększoną Pocztę (PEM). Została ona później zaktualizowana w RFC 1421 (1993) i RFC 2045 (1996, jako część MIME).
Termin "Base64" pochodzi od tego, że kodowanie używa 64 różnych znaków ASCII do reprezentowania danych binarnych. Ten wybór 64 znaków był celowy, ponieważ 64 jest potęgą liczby 2 (2^6), co czyni konwersję między binarnym a Base64 wydajną.
Z biegiem czasu pojawiło się kilka wariantów Base64:
- Standardowe Base64: Zdefiniowane w RFC 4648, używające A-Z, a-z, 0-9, +, / i = do dodawania
- Base64 bezpieczne dla URL: Używa - i _ zamiast + i / w celu uniknięcia problemów z kodowaniem URL
- Base64 bezpieczne dla nazw plików: Podobne do bezpiecznego dla URL, zaprojektowane do użycia w nazwach plików
- Zmodyfikowane Base64 dla IMAP: Używane w protokole IMAP z innym zestawem znaków specjalnych
Pomimo tego, że ma już ponad trzy dekady, Base64 pozostaje fundamentalnym narzędziem w nowoczesnym przetwarzaniu, szczególnie w związku z rosnącą popularnością aplikacji internetowych i API, które w dużej mierze opierają się na tekstowych formatach danych, takich jak JSON.
Przykłady kodu
Oto przykłady kodowania i dekodowania Base64 w różnych językach programowania:
1// Kodowanie/Dekodowanie Base64 w JavaScript
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("Nieprawidłowy ciąg Base64");
11 }
12}
13
14// Przykład użycia
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Zakodowane:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Odkodowane:", decoded); // Hello, World!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Kodowanie/Dekodowanie Base64 w Pythonie
2import base64
3
4def encode_to_base64(text):
5 # Konwertuj ciąg na bajty, a następnie zakoduj
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 # Konwertuj ciąg base64 na bajty, a następnie dekoduj
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"Nieprawidłowy ciąg Base64: {e}")
18
19# Przykład użycia
20original_text = "Hello, World!"
21encoded = encode_to_base64(original_text)
22print(f"Zakodowane: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Odkodowane: {decoded}") # Hello, World!
27except ValueError as e:
28 print(e)
29
1// Kodowanie/Dekodowanie Base64 w Javie
2import java.util.Base64;
3import java.nio.charset.StandardCharsets;
4
5public class Base64Example {
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("Nieprawidłowy ciąg Base64: " + 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("Zakodowane: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Odkodowane: " + decoded); // Hello, World!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// Kodowanie/Dekodowanie Base64 w PHP
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("Nieprawidłowy ciąg Base64");
11 }
12 return $decoded;
13}
14
15// Przykład użycia
16$originalText = "Hello, World!";
17$encoded = encodeToBase64($originalText);
18echo "Zakodowane: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Odkodowane: " . $decoded . "\n"; // Hello, World!
23} catch (Exception $e) {
24 echo "Błąd: " . $e->getMessage() . "\n";
25}
26?>
27
1// Kodowanie/Dekodowanie Base64 w C#
2using System;
3using System.Text;
4
5class Base64Example
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("Nieprawidłowy ciąg Base64");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hello, World!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Zakodowane: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Odkodowane: {decoded}"); // Hello, World!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Błąd: {e.Message}");
40 }
41 }
42}
43
1# Kodowanie/Dekodowanie Base64 w Ruby
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 "Nieprawidłowy ciąg Base64: #{e.message}"
13 end
14end
15
16# Przykład użycia
17original_text = "Hello, World!"
18encoded = encode_to_base64(original_text)
19puts "Zakodowane: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Odkodowane: #{decoded}" # Hello, World!
24rescue StandardError => e
25 puts "Błąd: #{e.message}"
26end
27
1// Kodowanie/Dekodowanie Base64 w Go
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(base64String string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64String)
15 if err != nil {
16 return "", fmt.Errorf("nieprawidłowy ciąg Base64: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hello, World!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Zakodowane:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Błąd:", err)
29 } else {
30 fmt.Println("Odkodowane:", decoded) // Hello, World!
31 }
32}
33
1// Kodowanie/Dekodowanie Base64 w Swift
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// Przykład użycia
19let originalText = "Hello, World!"
20if let encoded = encodeToBase64(originalText) {
21 print("Zakodowane: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Odkodowane: \(decoded)") // Hello, World!
25 } else {
26 print("Błąd: Nie można dekodować ciągu Base64")
27 }
28} else {
29 print("Błąd: Nie można zakodować tekstu")
30}
31
1' Kodowanie/Dekodowanie Base64 w Excel VBA
2' Uwaga: To wymaga odniesienia do 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 = "Błąd: Nieprawidłowy ciąg Base64"
39End Function
40
41' Użycie w arkuszu roboczym:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# Kodowanie/Dekodowanie Base64 w R
2# Wymaga pakietu 'base64enc'
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Konwertuj tekst na bajty raw, a następnie zakoduj
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 # Konwertuj ciąg base64 na bajty raw, a następnie dekoduj
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Nieprawidłowy ciąg Base64:", e$message))
21 })
22}
23
24# Przykład użycia
25original_text <- "Hello, World!"
26encoded <- encode_to_base64(original_text)
27cat("Zakodowane:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Odkodowane:", decoded, "\n") # Hello, World!
32}, error = function(e) {
33 cat("Błąd:", e$message, "\n")
34})
35
1% Kodowanie/Dekodowanie Base64 w MATLAB
2function demo_base64()
3 originalText = 'Hello, World!';
4
5 % Kodowanie
6 encoded = encode_to_base64(originalText);
7 fprintf('Zakodowane: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % Dekodowanie
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Odkodowane: %s\n', decoded); % Hello, World!
13 catch e
14 fprintf('Błąd: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Konwertuj tekst na tablicę uint8 i zakoduj
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Dekoduj ciąg base64 na tablicę uint8
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Nieprawidłowy ciąg Base64');
31 end
32end
33
1// Kodowanie/Dekodowanie Base64 w C z użyciem OpenSSL
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; // Nieprawidłowy ciąg Base64
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("Zakodowane: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Odkodowane: %s\n", decoded); // Hello, World!
65 free(decoded);
66 } else {
67 printf("Błąd: Nieprawidłowy ciąg Base64\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Kodowanie/Dekodowanie Base64 w Rust
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!("Nieprawidłowa sekwencja UTF-8: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Nieprawidłowy ciąg Base64: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hello, World!";
23 let encoded = encode_to_base64(original_text);
24 println!("Zakodowane: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Odkodowane: {}", decoded), // Hello, World!
28 Err(e) => println!("Błąd: {}", e)
29 }
30}
31
Implementacja JavaScript z konwersją na żywo
Oto przykład, jak można zaimplementować funkcję konwersji na żywo w JavaScript:
1// Implementacja JavaScript z konwersją na żywo
2const textInput = document.getElementById('text-input');
3const base64Output = document.getElementById('base64-output');
4const liveConversionCheckbox = document.getElementById('live-conversion');
5let debounceTimeout = null;
6
7// Funkcja do kodowania z opóźnieniem dla wydajności
8function liveEncode() {
9 // Wyczyść wszelkie istniejące opóźnienia
10 if (debounceTimeout) {
11 clearTimeout(debounceTimeout);
12 }
13
14 // Ustaw nowe opóźnienie, aby zapobiec nadmiernemu przetwarzaniu podczas szybkiego pisania
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('Błąd kodowania:', e);
25 // Obsłuż błąd odpowiednio w interfejsie
26 }
27 }, 300); // 300ms opóźnienie
28}
29
30// Nasłuchiwacze zdarzeń
31liveConversionCheckbox.addEventListener('change', function() {
32 if (this.checked) {
33 // Włącz konwersję na żywo
34 textInput.addEventListener('input', liveEncode);
35 // Początkowe kodowanie
36 liveEncode();
37 } else {
38 // Wyłącz konwersję na żywo
39 textInput.removeEventListener('input', liveEncode);
40 }
41});
42
Skrajne przypadki i uwagi
Podczas pracy z kodowaniem i dekodowaniem Base64, zwróć uwagę na te ważne uwagi:
-
Znaki Unicode i nie-ASCII: Podczas kodowania tekstu z nie-ASCII, upewnij się, że przed kodowaniem Base64 używasz odpowiedniego kodowania znaków (zwykle UTF-8).
-
Dodawanie: Standardowe Base64 używa dodawania znaków "=" w celu zapewnienia, że długość wyjścia jest wielokrotnością 4. Niektóre implementacje pozwalają na pominięcie dodawania, co może powodować problemy z kompatybilnością.
-
Złamania linii: Tradycyjne implementacje Base64 wstawiają złamania linii (zwykle co 76 znaków) dla czytelności, ale nowoczesne aplikacje często je pomijają.
-
Base64 bezpieczne dla URL: Standardowe Base64 używa znaków "+" i "/", które mają specjalne znaczenia w adresach URL. W kontekście URL użyj Base64 bezpiecznego dla URL, które zastępuje te znaki "-" i "_".
-
Białe znaki: Podczas dekodowania niektóre implementacje są tolerancyjne i ignorują białe znaki, podczas gdy inne wymagają dokładnego wejścia.
-
Wzrost rozmiaru: Kodowanie Base64 zwiększa rozmiar danych o około 33% (4 bajty wyjściowe na każdy 3 bajty wejściowe).
-
Wydajność: Kodowanie/dekodowanie Base64 może być intensywne obliczeniowo dla bardzo dużych danych. Nasze narzędzie używa opóźnienia, aby zachować responsywność, nawet przy większych wejściach.
-
Uwagi dotyczące konwersji na żywo: Gdy korzystasz z funkcji konwersji na żywo z bardzo dużymi wejściami, możesz zauważyć niewielkie opóźnienie, gdy narzędzie przetwarza dane. To jest normalne i pomaga zachować wydajność przeglądarki.
Najczęściej zadawane pytania
Czym jest funkcja konwersji na żywo?
Funkcja konwersji na żywo automatycznie aktualizuje wynik w miarę pisania, bez potrzeby klikania przycisku kodowania lub dekodowania. Zapewnia to natychmiastową informację zwrotną i sprawia, że narzędzie jest bardziej interaktywne i efektywne w użyciu.
Czy konwersja na żywo spowolni moją przeglądarkę przy dużych wejściach?
Nasza implementacja używa opóźnienia, aby zapewnić dobrą wydajność nawet przy większych wejściach. Konwersja odbywa się tylko po krótkim wstrzymaniu pisania, a nie przy każdym naciśnięciu klawisza, co zapobiega nadmiernemu przetwarzaniu podczas szybkiego pisania.
Kiedy powinienem używać konwersji na żywo, a kiedy ręcznej konwersji?
Konwersja na żywo jest idealna do interaktywnej pracy, gdy chcesz natychmiastowej informacji zwrotnej. Dla bardzo dużych zbiorów danych lub gdy chcesz przejrzeć swoje wejście przed konwersją, możesz preferować opcję ręcznej konwersji.
Czy konwersja na żywo działa w obu kierunkach?
Tak, funkcja konwersji na żywo działa w obu kierunkach - z tekstu do Base64 i z Base64 do tekstu.
Co się stanie, jeśli wprowadzę nieprawidłowy Base64 z włączoną konwersją na żywo?
Jeśli wprowadzisz nieprawidłowe znaki Base64 podczas trybu dekodowania z włączoną konwersją na żywo, narzędzie wyświetli komunikat o błędzie w czasie rzeczywistym, pomagając Ci zidentyfikować i poprawić problem natychmiast.
Odnośniki
- RFC 4648 - Kodowania danych Base16, Base32 i Base64
- RFC 2045 - MIME Część Pierwsza: Format ciał wiadomości Internetowych
- MDN Web Docs: Kodowanie i dekodowanie Base64
- Base64 - Wikipedia
- MIME - Wikipedia
Wypróbuj nasze narzędzie do kodowania/dekodowania Base64 już dziś, aby szybko konwertować między tekstem a formatami Base64 z wygodą konwersji w czasie rzeczywistym. Niezależnie od tego, czy jesteś programistą pracującym z API, obsługującym załączniki e-mail, czy osadzającym dane binarne w formatach tekstowych, nasze narzędzie sprawia, że proces jest prosty i efektywny.
Powiązane narzędzia
Odkryj więcej narzędzi, które mogą być przydatne dla Twojego przepływu pracy