Base64 kodētājs un dekodētājs: Teksta konvertēšana uz/ no Base64
Bezmaksas tiešsaistes rīks, lai kodētu tekstu uz Base64 vai dekodētu Base64 virknes atpakaļ tekstā. Atbalsta standarta un URL-drošu Base64 kodēšanu ar tūlītēju konversiju.
Base64 kodētājs/dekodētājs
Dokumentācija
Base64 Kodu un Dekodēšanas Rīks
Ievads
Base64 ir bināro datu kodēšanas shēma, kas attēlo bināros datus ASCII virknes formātā. Tā ir izstrādāta, lai pārnestu datus, kas glabājas bināros formātos, pa kanāliem, kas uzticami atbalsta tikai teksta saturu. Base64 kodēšana pārvērš bināros datus 64 rakstzīmju kopā (tāpēc nosaukums), kas var droši tikt pārsūtīti pa teksta balstītiem protokoliem bez datu bojājumiem.
Base64 rakstzīmju kopā ietilpst:
- Lielie burti A-Z (26 rakstzīmes)
- Mazie burti a-z (26 rakstzīmes)
- Cipari 0-9 (10 rakstzīmes)
- Divas papildu rakstzīmes, parasti "+" un "/" (2 rakstzīmes)
Šis rīks ļauj jums viegli kodēt tekstu Base64 formātā vai dekodēt Base64 virknes atpakaļ to sākotnējā tekstā. Tas ir īpaši noderīgi izstrādātājiem, IT profesionāļiem un ikvienam, kurš strādā ar datiem, kas jānosūta droši pa teksta balstītiem kanāliem. Ar mūsu reāllaika konversijas funkciju jūs varat nekavējoties redzēt rezultātus, kamēr rakstāt, padarot jūsu kodēšanas un dekodēšanas darba plūsmu efektīvāku.
Kā darbojas Base64 kodēšana
Kodēšanas process
Base64 kodēšana darbojas, pārvēršot katru trīs baitus (24 bitus) bināro datu grupu četrās Base64 rakstzīmēs. Process seko šiem soļiem:
- Pārvērst ievades tekstu tā binārajā attēlojumā (izmantojot ASCII vai UTF-8 kodējumu)
- Grupēt bināros datus 24 bitu (3 baitus) gabalos
- Sadalīt katru 24 bitu gabalu četros 6 bitu segmentos
- Pārvērst katru 6 bitu segmentu tā atbilstošajā Base64 rakstzīmē
Kad ievades garums nav dalāms ar 3, pievieno "=" rakstzīmes, lai saglabātu 4:3 attiecību starp izejas un ievades garumiem.
Matemātiskais attēlojums
Baitiem atbilstošās Base64 rakstzīmes tiek aprēķinātas kā:
Kur attēlo -to rakstzīmi Base64 alfabētā.
Dekodēšanas process
Base64 dekodēšana apgriež kodēšanas procesu:
- Pārvērst katru Base64 rakstzīmi tās 6 bitu vērtībā
- Apvienot šīs 6 bitu vērtības
- Grupēt bitus 8 bitu gabalos (baitu)
- Pārvērst katru baitus atbilstošajā rakstzīmē
Piepildījums
Kad kodēšanai paliek viens baits, tas tiek pārvērsts divās Base64 rakstzīmēs, kam seko "==" Kad paliek divi baiti, tie tiek pārvērsti trijās Base64 rakstzīmēs, kam seko "="
Piemērs
Piemēram, kodēsim tekstu "Sveiki" uz Base64:
- ASCII attēlojums "Sveiki": 83 118 101 105 107 105
- Binārais attēlojums: 01010011 01110110 01100101 01101001 01101011 01101001
- Grupēšana 6 bitu segmentos: 010100 110111 010110 010101 101011 010110 1001
- Pēdējais segments satur tikai 4 bitus, tāpēc mēs pievienojam nulles: 010100 110111 010110 010101 101011 010110 100100
- Pārvēršana decimālajā: 20, 6, 21, 44, 27, 6, 36
- Meklējot Base64 alfabētā: U, d, Z, p, a, d, k
- Rezultāts ir "UHZpZQ=="
Piezīmiet "=" piepildījumu beigās, jo ievades garums (6 baiti) nav dalāms ar 3.
Formula
Vispārējā formula, lai aprēķinātu Base64 kodētā virknes garumu, ir:
Kur apzīmē griestu funkciju (noapaļojot uz augšu līdz tuvākajam veselajam skaitlim).
Base64 Kodu/Dekodēšanas Rīka Izmantošana
Mūsu Base64 rīks nodrošina vienkāršu un efektīvu veidu, kā kodēt tekstu uz Base64 vai dekodēt Base64 atpakaļ uz tekstu. Šeit ir norādīts, kā to izmantot:
Pamata izmantošana
- Izvēlieties darbības režīmu: Izvēlieties "Kodēt", lai pārvērstu tekstu uz Base64, vai "Dekodēt", lai pārvērstu Base64 atpakaļ uz tekstu.
- Ievadiet savu ievadi: Ierakstiet vai ielīmējiet savu tekstu vai Base64 virkni ievades laukā.
- Konvertēt: Noklikšķiniet uz pogas "Kodēt uz Base64" vai "Dekodēt no Base64", lai veiktu konversiju.
- Kopējiet rezultātu: Izmantojiet pogu "Kopēt", lai kopētu rezultātu uz jūsu starpliktuvi.
Reāllaika konversijas funkcija
Mūsu rīks tagad ietver reāllaika konversijas iespēju, kas atjaunina izeju, kamēr jūs rakstāt:
- Iespējot reāllaika konversiju: Atzīmējiet "Reāllaika konversija" izvēles rūtiņu rīka augšdaļā.
- Redziet tūlītējus rezultātus: Kamēr jūs rakstāt ievades laukā, izeja tiks automātiski atjaunināta, nepiespiežot konversijas pogu.
- Pārslēgt pēc vajadzības: Jūs varat iespējot vai atspējot reāllaika konversiju jebkurā laikā atkarībā no jūsu vēlmēm.
Reāllaika konversijas funkcija ir īpaši noderīga, kad:
- Strādājat ar īsiem vai vidēja garuma tekstiem vai Base64 virknes
- Veicat pakāpeniskas izmaiņas un nepieciešama tūlītēja atgriezeniskā saite
- Izpētāt, kā dažādas rakstzīmes tiek kodētas/dekodētas
- Mācāties par Base64 kodēšanas paraugiem
Lai gan rīks izmanto debouncing, lai uzturētu veiktspēju, pārliecinoties, ka konversija notiek tikai pēc tam, kad jūs īsu brīdi esat apstājušies rakstīt, nevis katru taustiņu nospiešanu.
Lietošanas gadījumi
Base64 kodēšana ir plaši izmantota dažādās lietojumprogrammās:
-
E-pasta pielikumi: MIME (Multipurpose Internet Mail Extensions) izmanto Base64, lai kodētu bināros pielikumus e-pastā.
-
Datu URL: Iekļaujot mazus attēlus, fontus vai citus resursus tieši HTML, CSS vai JavaScript, izmantojot
data:
URL shēmu. -
API komunikācijas: Droši pārsūtot bināros datus JSON slodzes vai citu teksta balstītu API formātu ietvaros.
-
Bināro datu glabāšana teksta formātos: Kad binārie dati jāglabā XML, JSON vai citos teksta balstītos formātos.
-
Autentifikācijas sistēmas: Pamata autentifikācija HTTP izmanto Base64 kodēšanu (lai gan tas nav drošības nolūkos, tikai kodēšanai).
-
Kryptogrāfija: Dažādu kriptogrāfisko protokolu un sistēmu sastāvdaļa, bieži vien atslēgu vai sertifikātu kodēšanai.
-
Sīkdatņu vērtības: Sarežģītu datu struktūru kodēšana, lai tās varētu glabāt sīkdatnēs.
Alternatīvas
Lai gan Base64 ir plaši izmantots, ir arī alternatīvas, kas var būt piemērotākas noteiktās situācijās:
-
URL-droša Base64: Variants, kas izmanto "-" un "_" vietā "+" un "/", lai izvairītos no URL kodēšanas problēmām. Noderīgi datiem, kas tiks iekļauti URL.
-
Base32: Izmanto 32 rakstzīmju kopu, rezultātā iegūstot garāku izeju, bet ar labāku cilvēku lasāmību un gadījuma neievērošanu.
-
Hex kodēšana: Vienkārša pārvēršana uz heksadecimālo, kas ir mazāk efektīva (dubultojot izmēru), bet ļoti vienkārša un plaši atbalstīta.
-
Binārā pārsūtīšana: Lieliem failiem vai kad efektivitāte ir svarīga, tieša binārā pārsūtīšanas protokoli, piemēram, HTTP ar atbilstošiem Content-Type virsrakstiem, ir priekšroka.
-
Saspiešana + Base64: Lieliem teksta datiem saspiešana pirms kodēšanas var mazināt izmēra pieaugumu.
-
JSON/XML serializācija: Strukturētiem datiem, izmantojot nativu JSON vai XML serializāciju, var būt piemērotāk nekā Base64 kodēšana.
Vēsture
Base64 kodēšana ir savas saknes meklējama agrīnajā datorzinātnē un telekomunikāciju sistēmās, kur binārie dati bija jānosūta pa kanāliem, kas tika izstrādāti teksta pārnesei.
Oficiālā Base64 specifikācija pirmo reizi tika publicēta 1987. gadā kā daļa no RFC 989, kas definēja Privātuma uzlaboto pastu (PEM). Tas vēlāk tika atjaunināts RFC 1421 (1993) un RFC 2045 (1996, kā daļa no MIME).
Termins "Base64" nāk no tā, ka kodēšana izmanto 64 dažādas ASCII rakstzīmes, lai attēlotu bināros datus. Šī 64 rakstzīmju izvēle bija apzināta, jo 64 ir 2 pakāpe (2^6), kas padara pārvēršanu starp bināro un Base64 efektīvu.
Laika gaitā ir radušās vairākas Base64 variācijas:
- Standarta Base64: Kā definēts RFC 4648, izmantojot A-Z, a-z, 0-9, +, / un = piepildījumam
- URL-droša Base64: Izmanto - un _ vietā + un /, lai izvairītos no URL kodēšanas problēmām
- Failu droša Base64: Līdzīga URL-drošai, paredzēta izmantošanai failu nosaukumos
- Modificēta Base64 IMAP protokolam: Izmantota IMAP protokolā ar atšķirīgu speciālo rakstzīmju kopu
Neskatoties uz to, ka tā ir vairāk nekā trīs desmitgades veca, Base64 joprojām ir pamata rīks mūsdienu datorzinātnē, īpaši ar tīmekļa lietojumprogrammu un API pieaugumu, kas lielā mērā paļaujas uz teksta balstītām datu formām, piemēram, JSON.
Koda piemēri
Šeit ir Base64 kodēšanas un dekodēšanas piemēri dažādās programmēšanas valodās:
1// JavaScript Base64 kodēšana/dekodēšana
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("Nederīga Base64 virkne");
11 }
12}
13
14// Piemēra izmantošana
15const originalText = "Sveiki, pasaule!";
16const encoded = encodeToBase64(originalText);
17console.log("Kodēts:", encoded); // U3Zla2ksIHBhc3VsbGUh
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Dekodēts:", decoded); // Sveiki, pasaule!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Python Base64 kodēšana/dekodēšana
2import base64
3
4def encode_to_base64(text):
5 # Pārvērst virkni par baitiem un tad kodēt
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 # Pārvērst Base64 virkni par baitiem un tad dekodēt
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"Nederīga Base64 virkne: {e}")
18
19# Piemēra izmantošana
20original_text = "Sveiki, pasaule!"
21encoded = encode_to_base64(original_text)
22print(f"Kodēts: {encoded}") # U3Zla2ksIHBhc3VsbGUh
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Dekodēts: {decoded}") # Sveiki, pasaule!
27except ValueError as e:
28 print(e)
29
1// Java Base64 kodēšana/dekodēšana
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("Nederīga Base64 virkne: " + e.getMessage());
19 }
20 }
21
22 public static void main(String[] args) {
23 String originalText = "Sveiki, pasaule!";
24 String encoded = encodeToBase64(originalText);
25 System.out.println("Kodēts: " + encoded); // U3Zla2ksIHBhc3VsbGUh
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Dekodēts: " + decoded); // Sveiki, pasaule!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// PHP Base64 kodēšana/dekodēšana
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("Nederīga Base64 virkne");
11 }
12 return $decoded;
13}
14
15// Piemēra izmantošana
16$originalText = "Sveiki, pasaule!";
17$encoded = encodeToBase64($originalText);
18echo "Kodēts: " . $encoded . "\n"; // U3Zla2ksIHBhc3VsbGUh
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Dekodēts: " . $decoded . "\n"; // Sveiki, pasaule!
23} catch (Exception $e) {
24 echo "Kļūda: " . $e->getMessage() . "\n";
25}
26?>
27
1// C# Base64 kodēšana/dekodēšana
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("Nederīga Base64 virkne");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Sveiki, pasaule!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Kodēts: {encoded}"); // U3Zla2ksIHBhc3VsbGUh
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Dekodēts: {decoded}"); // Sveiki, pasaule!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Kļūda: {e.Message}");
40 }
41 }
42}
43
1# Ruby Base64 kodēšana/dekodēšana
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 "Nederīga Base64 virkne: #{e.message}"
13 end
14end
15
16# Piemēra izmantošana
17original_text = "Sveiki, pasaule!"
18encoded = encode_to_base64(original_text)
19puts "Kodēts: #{encoded}" # U3Zla2ksIHBhc3VsbGUh
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Dekodēts: #{decoded}" # Sveiki, pasaule!
24rescue StandardError => e
25 puts "Kļūda: #{e.message}"
26end
27
1// Go Base64 kodēšana/dekodēšana
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("nederīga Base64 virkne: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Sveiki, pasaule!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Kodēts:", encoded) // U3Zla2ksIHBhc3VsbGUh
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Kļūda:", err)
29 } else {
30 fmt.Println("Dekodēts:", decoded) // Sveiki, pasaule!
31 }
32}
33
1// Swift Base64 kodēšana/dekodēšana
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// Piemēra izmantošana
19let originalText = "Sveiki, pasaule!"
20if let encoded = encodeToBase64(originalText) {
21 print("Kodēts: \(encoded)") // U3Zla2ksIHBhc3VsbGUh
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Dekodēts: \(decoded)") // Sveiki, pasaule!
25 } else {
26 print("Kļūda: nevarēja dekodēt Base64 virkni")
27 }
28} else {
29 print("Kļūda: nevarēja kodēt tekstu")
30}
31
1' Excel VBA Base64 kodēšana/dekodēšana
2' Piezīme: Šim ir nepieciešams atsaukties uz 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 = "Kļūda: nederīga Base64 virkne"
39End Function
40
41' Izmantošana darblapā:
42' =EncodeToBase64("Sveiki, pasaule!")
43' =DecodeFromBase64("U3Zla2ksIHBhc3VsbGUh")
44
1# R Base64 kodēšana/dekodēšana
2# Prasa 'base64enc' pakotni
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Pārvērst tekstu par izejvielām, tad kodēt
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 # Pārvērst Base64 virkni par izejvielām, tad dekodēt
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Nederīga Base64 virkne:", e$message))
21 })
22}
23
24# Piemēra izmantošana
25original_text <- "Sveiki, pasaule!"
26encoded <- encode_to_base64(original_text)
27cat("Kodēts:", encoded, "\n") # U3Zla2ksIHBhc3VsbGUh
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Dekodēts:", decoded, "\n") # Sveiki, pasaule!
32}, error = function(e) {
33 cat("Kļūda:", e$message, "\n")
34})
35
1% MATLAB Base64 kodēšana/dekodēšana
2function demo_base64()
3 originalText = 'Sveiki, pasaule!';
4
5 % Kodēt
6 encoded = encode_to_base64(originalText);
7 fprintf('Kodēts: %s\n', encoded); % U3Zla2ksIHBhc3VsbGUh
8
9 % Dekodēt
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Dekodēts: %s\n', decoded); % Sveiki, pasaule!
13 catch e
14 fprintf('Kļūda: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Pārvērst tekstu par uint8 masīvu un kodēt
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Dekodēt Base64 virkni par uint8 masīvu
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Nederīga Base64 virkne');
31 end
32end
33
1// C Base64 kodēšana/dekodēšana, izmantojot 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; // Nederīga Base64 ievade
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 = "Sveiki, pasaule!";
58
59 char* encoded = encode_to_base64(original_text);
60 printf("Kodēts: %s\n", encoded); // U3Zla2ksIHBhc3VsbGUh
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Dekodēts: %s\n", decoded); // Sveiki, pasaule!
65 free(decoded);
66 } else {
67 printf("Kļūda: nederīga Base64 virkne\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Rust Base64 kodēšana/dekodēšana
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!("Nederīga UTF-8 secība: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Nederīga Base64 virkne: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Sveiki, pasaule!";
23 let encoded = encode_to_base64(original_text);
24 println!("Kodēts: {}", encoded); // U3Zla2ksIHBhc3VsbGUh
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Dekodēts: {}", decoded), // Sveiki, pasaule!
28 Err(e) => println!("Kļūda: {}", e)
29 }
30}
31
JavaScript īstenošana ar reāllaika konversiju
Šeit ir piemērs, kā jūs varētu īstenot reāllaika konversijas funkciju JavaScript:
1// JavaScript īstenošana ar reāllaika konversiju
2const textInput = document.getElementById('text-input');
3const base64Output = document.getElementById('base64-output');
4const liveConversionCheckbox = document.getElementById('live-conversion');
5let debounceTimeout = null;
6
7// Funkcija, lai kodētu ar debouncing, lai uzlabotu veiktspēju
8function liveEncode() {
9 // Notīrīt visus esošos taimerus
10 if (debounceTimeout) {
11 clearTimeout(debounceTimeout);
12 }
13
14 // Iestatīt jaunu taimeri, lai novērstu pārmērīgu apstrādi straujas rakstīšanas laikā
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('Kodēšanas kļūda:', e);
25 // Apstrādāt kļūdu atbilstoši lietotāja saskarnē
26 }
27 }, 300); // 300ms debouncing aizture
28}
29
30// Notikumu klausītāji
31liveConversionCheckbox.addEventListener('change', function() {
32 if (this.checked) {
33 // Iespējot reāllaika konversiju
34 textInput.addEventListener('input', liveEncode);
35 // Sākotnējā kodēšana
36 liveEncode();
37 } else {
38 // Atspējot reāllaika konversiju
39 textInput.removeEventListener('input', liveEncode);
40 }
41});
42
Malu gadījumi un apsvērumi
Strādājot ar Base64 kodēšanu un dekodēšanu, ņemiet vērā šos svarīgos apsvērumus:
-
Unicode un ne-ASCII rakstzīmes: Kad kodējat tekstu ar ne-ASCII rakstzīmēm, nodrošiniet pareizu rakstzīmju kodējumu (parasti UTF-8) pirms Base64 kodēšanas.
-
Piepildījums: Standarta Base64 izmanto piepildījumu ar "=" rakstzīmēm, lai nodrošinātu, ka izejas garums ir 4 reizes lielāks par 3. Dažas īstenošanas var atļaut izlaist piepildījumu, kas var izraisīt saderības problēmas.
-
Rindkopas: Tradicionālās Base64 īstenošanas ievieto rindkopas (parasti ik pēc 76 rakstzīmēm) lasāmībai, bet mūsdienu lietojumprogrammas bieži vien tās izslēdz.
-
URL-droša Base64: Standarta Base64 izmanto "+" un "/" rakstzīmes, kurām ir īpašas nozīmes URL. URL kontekstos izmantojiet URL-drošu Base64, kas šīs aizstāj ar "-" un "_".
-
Baltās vietas: Dekodējot, dažas īstenošanas ir iecietīgas un ignorē baltās vietas, kamēr citas prasa precīzu ievadi.
-
Izmēra pieaugums: Base64 kodēšana palielina datu izmēru par aptuveni 33% (4 izejas baiti katriem 3 ievades baitiem).
-
Veiktspēja: Base64 kodēšana/dekodēšana var būt datora resursu intensīva ļoti lieliem datiem. Mūsu rīks izmanto debouncing, lai uzturētu atbildību pat ar lielākiem ievadiem.
-
Reāllaika konversijas apsvērumi: Kad izmantojat reāllaika konversijas funkciju ar ļoti lielām ievadēm, jūs varat pamanīt nelielu aizturi, kamēr rīks apstrādā datus. Tas ir normāli un palīdz uzturēt pārlūkprogrammas veiktspēju.
Biežāk uzdotie jautājumi
Kas ir reāllaika konversijas funkcija?
Reāllaika konversijas funkcija automātiski atjaunina izeju, kamēr jūs rakstāt, bez nepieciešamības noklikšķināt uz kodēšanas vai dekodēšanas pogas. Tas nodrošina tūlītēju atgriezenisko saiti un padara rīku interaktīvāku un efektīvāku lietošanā.
Vai reāllaika konversija palēninās manu pārlūkprogrammu ar lielām ievadēm?
Mūsu īstenošana izmanto debouncing, lai nodrošinātu labu veiktspēju pat ar lielām ievadēm. Konversija notiek tikai pēc tam, kad jūs īsu brīdi esat apstājušies rakstīt, nevis katru taustiņu nospiešanu, kas novērš pārmērīgu apstrādi straujas rakstīšanas laikā.
Kad man vajadzētu izmantot reāllaika konversiju pret manuālo konversiju?
Reāllaika konversija ir ideāla interaktīvai darbībai, kad vēlaties tūlītēju atgriezenisko saiti. Ļoti lieliem datu kopām vai kad vēlaties pārskatīt savu ievadi pirms konversijas, jūs varat dot priekšroku manuālajai konversijas opcijai.
Vai reāllaika konversija darbojas gan kodēšanai, gan dekodēšanai?
Jā, reāllaika konversijas funkcija darbojas abos virzienos - no teksta uz Base64 un no Base64 uz tekstu.
Kas notiek, ja es ievadu nederīgu Base64 ar iespējotu reāllaika konversiju?
Ja jūs ievadāt nederīgas Base64 rakstzīmes, kamēr esat dekodēšanas režīmā ar iespējotu reāllaika konversiju, rīks reāllaikā parādīs kļūdas ziņojumu, palīdzot jums nekavējoties identificēt un labot problēmu.
Atsauces
- RFC 4648 - Base16, Base32 un Base64 datu kodējumi
- RFC 2045 - MIME pirmā daļa: Interneta ziņojumu ķermeņu formāts
- MDN Web Docs: Base64 kodēšana un dekodēšana
- Base64 - Vikipēdija
- MIME - Vikipēdija
Izmēģiniet mūsu Base64 Kodu/Dekodēšanas rīku jau šodien, lai ātri pārvērstu starp tekstu un Base64 formātiem ar reāllaika konversijas ērtību. Neatkarīgi no tā, vai esat izstrādātājs, kas strādā ar API, apstrādā e-pasta pielikumus vai iekļauj bināros datus teksta formātos, mūsu rīks padara procesu vienkāršu un efektīvu.
Saistītie Rīki
Atklājiet vairāk rīku, kas varētu būt noderīgi jūsu darbplūsmai