বেস64 এনকোডার এবং ডিকোডার: টেক্সটকে বেস64-এ রূপান্তর করুন/থেকে
বেস64-এ টেক্সট এনকোড বা বেস64 স্ট্রিংকে টেক্সটে ফিরে ডিকোড করার জন্য একটি বিনামূল্যের অনলাইন টুল। তাৎক্ষণিক রূপান্তরের জন্য স্ট্যান্ডার্ড এবং URL-নিরাপদ বেস64 এনকোডিং সমর্থন করে।
বেস64 এনকোডার/ডিকোডার
ডকুমেন্টেশন
বেস64 এনকোডার এবং ডিকোডার
ভূমিকা
বেস64 হল একটি বাইনারি-টু-টেক্সট এনকোডিং স্কিম যা বাইনারি ডেটাকে একটি ASCII স্ট্রিং ফরম্যাটে উপস্থাপন করে। এটি এমন ডেটা বহন করার জন্য ডিজাইন করা হয়েছে যা বাইনারি ফরম্যাটে সংরক্ষিত, এমন চ্যানেলগুলির মাধ্যমে যা কেবলমাত্র টেক্সট সামগ্রীকে নির্ভরযোগ্যভাবে সমর্থন করে। বেস64 এনকোডিং বাইনারি ডেটাকে 64টি অক্ষরের একটি সেটে রূপান্তর করে (এজন্য নাম) যা টেক্সট-ভিত্তিক প্রোটোকলের মাধ্যমে নিরাপদে প্রেরণ করা যেতে পারে কোন ডেটা ক্ষতি ছাড়াই।
বেস64 অক্ষরের সেটে অন্তর্ভুক্ত:
- বড় হাতের অক্ষর A-Z (26টি অক্ষর)
- ছোট হাতের অক্ষর a-z (26টি অক্ষর)
- সংখ্যা 0-9 (10টি অক্ষর)
- দুইটি অতিরিক্ত অক্ষর, সাধারণত "+" এবং "/" (2টি অক্ষর)
এই টুলটি আপনাকে সহজেই টেক্সটকে বেস64 ফরম্যাটে এনকোড বা বেস64 স্ট্রিংগুলিকে তাদের মূল টেক্সটে ডিকোড করতে দেয়। এটি বিশেষভাবে ডেভেলপার, IT পেশাজীবী এবং যেকোনো ব্যক্তির জন্য উপকারী যারা ডেটার সাথে কাজ করছেন যা টেক্সট-ভিত্তিক চ্যানেলের মাধ্যমে নিরাপদে প্রেরণ করতে হবে। আমাদের রিয়েল-টাইম কনভার্শন ফিচারের সাথে, আপনি টাইপ করার সাথে সাথে ফলাফলগুলি সাথে সাথে দেখতে পারেন, যা আপনার এনকোডিং এবং ডিকোডিং কাজের প্রবাহকে আরও কার্যকর করে।
কিভাবে বেস64 এনকোডিং কাজ করে
এনকোডিং প্রক্রিয়া
বেস64 এনকোডিং কাজ করে বাইনারি ডেটার প্রতি তিনটি বাইট (24 বিট) কে চারটি বেস64 অক্ষরে রূপান্তরিত করে। প্রক্রিয়াটি এই পদক্ষেপগুলি অনুসরণ করে:
- ইনপুট টেক্সটকে এর বাইনারি উপস্থাপনায় রূপান্তর করুন (ASCII বা UTF-8 এনকোডিং ব্যবহার করে)
- বাইনারি ডেটাকে 24 বিটের (3 বাইট) অংশে গ্রুপ করুন
- প্রতিটি 24-বিট অংশকে চারটি 6-বিট গ্রুপে বিভক্ত করুন
- প্রতিটি 6-বিট গ্রুপকে এর সংশ্লিষ্ট বেস64 অক্ষরে রূপান্তর করুন
যখন ইনপুট দৈর্ঘ্য 3 দ্বারা বিভাজ্য নয়, তখন 4:3 আউটপুট থেকে ইনপুট দৈর্ঘ্য বজায় রাখতে "=" অক্ষরের সাথে প্যাডিং যোগ করা হয়।
গাণিতিক উপস্থাপন
বাইটের একটি সিকোয়েন্স এর জন্য, সংশ্লিষ্ট বেস64 অক্ষর এইভাবে গণনা করা হয়:
যেখানে বেস64 অ্যালফাবেটে -তম অক্ষরকে উপস্থাপন করে।
ডিকোডিং প্রক্রিয়া
বেস64 ডিকোডিং এনকোডিং প্রক্রিয়াকে বিপরীত করে:
- প্রতিটি বেস64 অক্ষরকে এর 6-বিট মানে রূপান্তর করুন
- এই 6-বিট মানগুলিকে একত্রিত করুন
- বিটগুলিকে 8-বিট অংশে (বাইট) গ্রুপ করুন
- প্রতিটি বাইটকে এর সংশ্লিষ্ট অক্ষরে রূপান্তর করুন
প্যাডিং
যখন এনকোড করার জন্য বাইটের সংখ্যা 3 দ্বারা বিভাজ্য নয়, তখন প্যাডিং প্রয়োগ করা হয়:
- যদি একটি বাইট অবশিষ্ট থাকে, এটি দুইটি বেস64 অক্ষরে রূপান্তরিত হয় এবং "==" দ্বারা অনুসরণ করা হয়
- যদি দুটি বাইট অবশিষ্ট থাকে, সেগুলি তিনটি বেস64 অক্ষরে রূপান্তরিত হয় এবং "=" দ্বারা অনুসরণ করা হয়
উদাহরণ
চলুন "Hello" টেক্সটকে বেস64 তে এনকোড করি:
- "Hello" এর ASCII উপস্থাপনা: 72 101 108 108 111
- বাইনারি উপস্থাপনা: 01001000 01100101 01101100 01101100 01101111
- 6-বিট গ্রুপে গ্রুপিং: 010010 000110 010101 101100 011011 000110 1111
- শেষ অংশে মাত্র 4 বিট রয়েছে, তাই আমরা শূন্য দিয়ে প্যাড করি: 010010 000110 010101 101100 011011 000110 111100
- দশমিক এ রূপান্তর: 18, 6, 21, 44, 27, 6, 60
- বেস64 অ্যালফাবেটে দেখুন: S, G, V, s, b, G, 8
- ফলাফল হল "SGVsbG8="
শেষে "=" প্যাডিং রয়েছে কারণ ইনপুট দৈর্ঘ্য (5 বাইট) 3 দ্বারা বিভাজ্য নয়।
সূত্র
বেস64 এনকোডেড স্ট্রিংয়ের দৈর্ঘ্য গণনা করার জন্য সাধারণ সূত্র হল:
যেখানে ছাদ ফাংশন (নিকটতম পূর্ণ সংখ্যায় রাউন্ডিং আপ) উপস্থাপন করে।
বেস64 এনকোডার/ডিকোডার টুল ব্যবহার করা
আমাদের বেস64 টুলটি টেক্সটকে বেস64 তে এনকোড বা বেস64 কে টেক্সটে ফিরিয়ে আনার জন্য একটি সহজ এবং কার্যকরী উপায় প্রদান করে। এটি ব্যবহার করার জন্য এখানে কীভাবে:
মৌলিক ব্যবহার
- অপারেশন মোড নির্বাচন করুন: "এনকোড" নির্বাচন করুন টেক্সটকে বেস64 তে রূপান্তর করতে, অথবা "ডিকোড" নির্বাচন করুন বেস64 কে টেক্সটে ফিরিয়ে আনতে।
- আপনার ইনপুট প্রবেশ করান: ইনপুট ফিল্ডে আপনার টেক্সট বা বেস64 স্ট্রিং টাইপ করুন বা পেস্ট করুন।
- রূপান্তর করুন: "বেস64 তে এনকোড করুন" বা "বেস64 থেকে ডিকোড করুন" বোতামে ক্লিক করুন রূপান্তরটি সম্পন্ন করতে।
- ফলাফল কপি করুন: ফলাফলটি আপনার ক্লিপবোর্ডে কপি করতে "কপি" বোতামটি ব্যবহার করুন।
লাইভ কনভার্শন ফিচার
আমাদের টুলে এখন একটি রিয়েল-টাইম কনভার্শন অপশন রয়েছে যা আপনি টাইপ করার সাথে সাথে আউটপুট আপডেট করে:
- লাইভ কনভার্শন সক্ষম করুন: টুলের উপরের দিকে "লাইভ কনভার্শন" চেকবক্সটি চেক করুন।
- তাত্ক্ষণিক ফলাফল দেখুন: ইনপুট ফিল্ডে আপনি টাইপ করার সাথে সাথে আউটপুট স্বয়ংক্রিয়ভাবে আপডেট হবে কোন কনভার্শন বোতামে ক্লিক করার প্রয়োজন ছাড়াই।
- প্রয়োজন অনুযায়ী টগল করুন: আপনি যে কোনও সময় আপনার পছন্দ অনুসারে লাইভ কনভার্শন সক্ষম বা অক্ষম করতে পারেন।
লাইভ কনভার্শন ফিচারটি বিশেষভাবে উপকারী যখন:
- ছোট থেকে মাঝারি দৈর্ঘ্যের টেক্সট বা বেস64 স্ট্রিংয়ের সাথে কাজ করছেন
- ধাপে ধাপে পরিবর্তন করতে এবং তাত্ক্ষণিক প্রতিক্রিয়া প্রয়োজন
- বিভিন্ন অক্ষর কিভাবে এনকোড/ডিকোড হয় তা আবিষ্কার করছেন
- বেস64 এনকোডিং প্যাটার্ন সম্পর্কে শিখছেন
অত্যন্ত বড় ইনপুটগুলির জন্য, টুলটি কার্যকারিতা বজায় রাখতে ডেবাউন্সিং ব্যবহার করে, নিশ্চিত করে যে রূপান্তরটি কেবল তখনই ঘটে যখন আপনি টাইপিং বন্ধ করেন, প্রতিটি কীস্ট্রোকের পরে নয়।
ব্যবহার কেস
বেস64 এনকোডিং বিভিন্ন অ্যাপ্লিকেশনে ব্যাপকভাবে ব্যবহৃত হয়:
-
ইমেইল অ্যাটাচমেন্ট: MIME (মাল্টিপারপাস ইন্টারনেট মেইল এক্সটেনশন) বেস64 ব্যবহার করে ইমেইলে বাইনারি অ্যাটাচমেন্ট এনকোড করতে।
-
ডেটা URL: HTML, CSS, বা JavaScript এ সরাসরি ছোট ছবি, ফন্ট, বা অন্যান্য সম্পদ এম্বেড করা
data:
URL স্কিম ব্যবহার করে। -
এপিআই যোগাযোগ: JSON পেইলোড বা অন্যান্য টেক্সট-ভিত্তিক এপিআই ফরম্যাটে বাইনারি ডেটা নিরাপদে প্রেরণ করা।
-
টেক্সট ফরম্যাটে বাইনারি ডেটা সংরক্ষণ: যখন বাইনারি ডেটা XML, JSON, বা অন্যান্য টেক্সট-ভিত্তিক ফরম্যাটে সংরক্ষণ করতে হবে।
-
প্রমাণীকরণ ব্যবস্থা: HTTP তে বেসিক প্রমাণীকরণ বেস64 এনকোডিং ব্যবহার করে (যদিও এটি নিরাপত্তার জন্য নয়, কেবল এনকোডিংয়ের জন্য)।
-
ক্রিপ্টোগ্রাফি: বিভিন্ন ক্রিপ্টোগ্রাফিক প্রোটোকল এবং সিস্টেমের অংশ হিসাবে, প্রায়শই কী বা সার্টিফিকেট এনকোড করার জন্য।
-
কুকি মান: কুকিতে সংরক্ষিত জটিল ডেটা কাঠামো এনকোড করা।
বিকল্প
যদিও বেস64 ব্যাপকভাবে ব্যবহৃত হয়, কিছু পরিস্থিতিতে আরও উপযুক্ত বিকল্প রয়েছে:
-
URL-নিরাপদ বেস64: একটি ভিন্ন রূপ যা "+" এবং "/" এর পরিবর্তে "-" এবং "_" ব্যবহার করে URL এনকোডিং সমস্যাগুলি এড়াতে। URL-এ অন্তর্ভুক্ত ডেটার জন্য উপযুক্ত।
-
বেস32: 32-অক্ষরের সেট ব্যবহার করে, যা আউটপুটকে দীর্ঘতর করে কিন্তু মানুষের পড়ার জন্য আরও ভাল এবং কেস অ-সংবেদনশীল।
-
হেক্স এনকোডিং: হেক্সাডেসিমাল এ সরল রূপান্তর, যা কম কার্যকর (আকার দ্বিগুণ করে) কিন্তু খুব সহজ এবং ব্যাপকভাবে সমর্থিত।
-
বাইনারি স্থানান্তর: বড় ফাইলের জন্য বা যখন কার্যকারিতা গুরুত্বপূর্ণ, সঠিক কন্টেন্ট-টাইপ শিরোনামের সাথে HTTP এর মতো সরাসরি বাইনারি স্থানান্তর প্রোটোকলগুলি পছন্দসই।
-
সংকোচন + বেস64: বড় টেক্সট ডেটার জন্য, এনকোডিংয়ের আগে সংকোচন আকার বৃদ্ধিকে কমিয়ে আনতে পারে।
-
JSON/XML সিরিয়ালাইজেশন: কাঠামোগত ডেটার জন্য, বেস64 এনকোডিংয়ের তুলনায় স্থানীয় JSON বা XML সিরিয়ালাইজেশন ব্যবহার করা আরও উপযুক্ত হতে পারে।
ইতিহাস
বেস64 এনকোডিংয়ের উৎপত্তি প্রাথমিক কম্পিউটিং এবং টেলিযোগাযোগ সিস্টেমগুলিতে যেখানে বাইনারি ডেটাকে টেক্সটের জন্য ডিজাইন করা চ্যানেলগুলির মাধ্যমে প্রেরণ করতে হয়েছিল।
বেস64 এর আনুষ্ঠানিক স্পেসিফিকেশন প্রথম 1987 সালে RFC 989 হিসাবে প্রকাশিত হয়, যা প্রাইভেসি এনহান্সড মেইল (PEM) সংজ্ঞায়িত করে। এটি পরে RFC 1421 (1993) এবং RFC 2045 (1996, MIME এর অংশ হিসাবে) এ আপডেট করা হয়।
"বেস64" শব্দটি আসে কারণ এনকোডিং 64টি ভিন্ন ASCII অক্ষর ব্যবহার করে বাইনারি ডেটা উপস্থাপন করতে। এই 64টি অক্ষরের নির্বাচন ছিল উদ্দেশ্যমূলক, কারণ 64 একটি 2 এর শক্তি (2^6), যা বাইনারি এবং বেস64 এর মধ্যে রূপান্তরকে কার্যকর করে।
সময়ের সাথে সাথে, বেস64 এর বিভিন্ন রূপ তৈরি হয়েছে:
- মানক বেস64: RFC 4648 এ সংজ্ঞায়িত, A-Z, a-z, 0-9, +, / এবং = প্যাডিং ব্যবহার করে
- URL-নিরাপদ বেস64: "+" এবং "/" এর পরিবর্তে "-" এবং "_" ব্যবহার করে URL এনকোডিং সমস্যাগুলি এড়াতে
- ফাইলনেম-নিরাপদ বেস64: URL-নিরাপদ, ফাইলনেমে ব্যবহারের জন্য ডিজাইন করা
- IMAP এর জন্য সংশোধিত বেস64: IMAP প্রোটোকলে ব্যবহৃত একটি ভিন্ন সেট বিশেষ অক্ষরের সাথে
তিন দশকেরও বেশি সময় ধরে, বেস64 আধুনিক কম্পিউটিংয়ে একটি মৌলিক টুল হিসেবে রয়ে গেছে, বিশেষ করে ওয়েব অ্যাপ্লিকেশন এবং API গুলির উত্থানের সাথে যা টেক্সট-ভিত্তিক ডেটা ফরম্যাট যেমন JSON এর উপর ব্যাপকভাবে নির্ভর করে।
কোড উদাহরণ
বিভিন্ন প্রোগ্রামিং ভাষায় বেস64 এনকোডিং এবং ডিকোডিংয়ের উদাহরণ এখানে রয়েছে:
1// জাভাস্ক্রিপ্ট বেস64 এনকোডিং/ডিকোডিং
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("অবৈধ বেস64 স্ট্রিং");
11 }
12}
13
14// উদাহরণ ব্যবহার
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("এনকোডেড:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("ডিকোডেড:", decoded); // Hello, World!
22} catch (error) {
23 console.error(error.message);
24}
25
1# পাইথন বেস64 এনকোডিং/ডিকোডিং
2import base64
3
4def encode_to_base64(text):
5 # স্ট্রিংকে বাইটসে রূপান্তর করুন এবং তারপর এনকোড করুন
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 # বেস64 স্ট্রিংকে বাইটসে রূপান্তর করুন এবং তারপর ডিকোড করুন
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"অবৈধ বেস64 স্ট্রিং: {e}")
18
19# উদাহরণ ব্যবহার
20original_text = "Hello, World!"
21encoded = encode_to_base64(original_text)
22print(f"এনকোডেড: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"ডিকোডেড: {decoded}") # Hello, World!
27except ValueError as e:
28 print(e)
29
1// জাভা বেস64 এনকোডিং/ডিকোডিং
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("অবৈধ বেস64 স্ট্রিং: " + 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("এনকোডেড: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("ডিকোডেড: " + decoded); // Hello, World!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// পিএইচপি বেস64 এনকোডিং/ডিকোডিং
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("অবৈধ বেস64 স্ট্রিং");
11 }
12 return $decoded;
13}
14
15// উদাহরণ ব্যবহার
16$originalText = "Hello, World!";
17$encoded = encodeToBase64($originalText);
18echo "এনকোডেড: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "ডিকোডেড: " . $decoded . "\n"; // Hello, World!
23} catch (Exception $e) {
24 echo "ত্রুটি: " . $e->getMessage() . "\n";
25}
26?>
27
1// C# বেস64 এনকোডিং/ডিকোডিং
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("অবৈধ বেস64 স্ট্রিং");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hello, World!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"এনকোডেড: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"ডিকোডেড: {decoded}"); // Hello, World!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"ত্রুটি: {e.Message}");
40 }
41 }
42}
43
1# রুবি বেস64 এনকোডিং/ডিকোডিং
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 "অবৈধ বেস64 স্ট্রিং: #{e.message}"
13 end
14end
15
16# উদাহরণ ব্যবহার
17original_text = "Hello, World!"
18encoded = encode_to_base64(original_text)
19puts "এনকোডেড: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "ডিকোডেড: #{decoded}" # Hello, World!
24rescue StandardError => e
25 puts "ত্রুটি: #{e.message}"
26end
27
1// গো বেস64 এনকোডিং/ডিকোডিং
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("অবৈধ বেস64 স্ট্রিং: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hello, World!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("এনকোডেড:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("ত্রুটি:", err)
29 } else {
30 fmt.Println("ডিকোডেড:", decoded) // Hello, World!
31 }
32}
33
1// সুইফট বেস64 এনকোডিং/ডিকোডিং
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// উদাহরণ ব্যবহার
19let originalText = "Hello, World!"
20if let encoded = encodeToBase64(originalText) {
21 print("এনকোডেড: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("ডিকোডেড: \(decoded)") // Hello, World!
25 } else {
26 print("ত্রুটি: বেস64 স্ট্রিং ডিকোড করতে পারিনি")
27 }
28} else {
29 print("ত্রুটি: টেক্সট এনকোড করতে পারিনি")
30}
31
1' এক্সেল ভিবিএ বেস64 এনকোডিং/ডিকোডিং
2' নোট: এটি 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 = "ত্রুটি: অবৈধ বেস64 স্ট্রিং"
39End Function
40
41' একটি ওয়ার্কশিটে ব্যবহার:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# আর বেস64 এনকোডিং/ডিকোডিং
2# 'base64enc' প্যাকেজ প্রয়োজন
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # টেক্সটকে রাও বাইটসে রূপান্তর করুন, তারপর এনকোড করুন
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 # বেস64 স্ট্রিংকে রাও বাইটসে রূপান্তর করুন, তারপর ডিকোড করুন
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("অবৈধ বেস64 স্ট্রিং:", e$message))
21 })
22}
23
24# উদাহরণ ব্যবহার
25original_text <- "Hello, World!"
26encoded <- encode_to_base64(original_text)
27cat("এনকোডেড:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("ডিকোডেড:", decoded, "\n") # Hello, World!
32}, error = function(e) {
33 cat("ত্রুটি:", e$message, "\n")
34})
35
1% ম্যাটল্যাব বেস64 এনকোডিং/ডিকোডিং
2function demo_base64()
3 originalText = 'Hello, World!';
4
5 % এনকোড
6 encoded = encode_to_base64(originalText);
7 fprintf('এনকোডেড: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % ডিকোড
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('ডিকোডেড: %s\n', decoded); % Hello, World!
13 catch e
14 fprintf('ত্রুটি: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % টেক্সটকে uint8 অ্যারেতে রূপান্তর করুন এবং এনকোড করুন
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % বেস64 স্ট্রিংকে uint8 অ্যারেতে ডিকোড করুন
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('অবৈধ বেস64 স্ট্রিং');
31 end
32end
33
1// C বেস64 এনকোডিং/ডিকোডিং 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; // অবৈধ বেস64 ইনপুট
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("এনকোডেড: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("ডিকোডেড: %s\n", decoded); // Hello, World!
65 free(decoded);
66 } else {
67 printf("ত্রুটি: অবৈধ বেস64 স্ট্রিং\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// রস্ট বেস64 এনকোডিং/ডিকোডিং
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!("অবৈধ UTF-8 সিকোয়েন্স: {}", e))
15 }
16 },
17 Err(e) => Err(format!("অবৈধ বেস64 স্ট্রিং: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hello, World!";
23 let encoded = encode_to_base64(original_text);
24 println!("এনকোডেড: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("ডিকোডেড: {}", decoded), // Hello, World!
28 Err(e) => println!("ত্রুটি: {}", e)
29 }
30}
31
1// লাইভ কনভার্শন সহ জাভাস্ক্রিপ্ট বাস্তবায়ন
2
3const textInput = document.getElementById('text-input');
4const base64Output = document.getElementById('base64-output');
5const liveConversionCheckbox = document.getElementById('live-conversion');
6let debounceTimeout = null;
7
8// কার্যকারিতা ডেবাউন্সিংয়ের সাথে এনকোড করার জন্য
9function liveEncode() {
10 // বিদ্যমান টাইমআউট পরিষ্কার করুন
11 if (debounceTimeout) {
12 clearTimeout(debounceTimeout);
13 }
14
15 // দ্রুত টাইপিংয়ের সময় অতিরিক্ত প্রক্রিয়াকরণ প্রতিরোধ করতে একটি নতুন টাইমআউট সেট করুন
16 debounceTimeout = setTimeout(() => {
17 try {
18 const text = textInput.value;
19 if (text.trim()) {
20 base64Output.value = btoa(text);
21 } else {
22 base64Output.value = '';
23 }
24 } catch (e) {
25 console.error('এনকোডিং ত্রুটি:', e);
26 // UI তে সঠিকভাবে ত্রুটি পরিচালনা করুন
27 }
28 }, 300); // 300ms ডেবাউন্স বিলম্ব
29}
30
31// ইভেন্ট লিসেনার
32liveConversionCheckbox.addEventListener('change', function() {
33 if (this.checked) {
34 // লাইভ কনভার্শন সক্ষম করুন
35 textInput.addEventListener('input', liveEncode);
36 // প্রাথমিক এনকোড করুন
37 liveEncode();
38 } else {
39 // লাইভ কনভার্শন অক্ষম করুন
40 textInput.removeEventListener('input', liveEncode);
41 }
42});
43
প্রান্তিক কেস এবং বিবেচনা
বেস64 এনকোডিং এবং ডিকোডিংয়ের সাথে কাজ করার সময়, এই গুরুত্বপূর্ণ বিবেচনাগুলি সম্পর্কে সচেতন থাকুন:
-
ইউনিকোড এবং নন-ASCII অক্ষর: যখন অ-ASCII অক্ষরযুক্ত টেক্সট এনকোড করছেন, নিশ্চিত করুন যে বেস64 এনকোডিংয়ের আগে সঠিক অক্ষর এনকোডিং (সাধারণত UTF-8) ব্যবহার করা হচ্ছে।
-
প্যাডিং: মানক বেস64 আউটপুট দৈর্ঘ্য 4 এর গুণিতক নিশ্চিত করতে "=" অক্ষরের সাথে প্যাডিং ব্যবহার করে। কিছু বাস্তবায়ন প্যাডিং বাদ দেওয়ার অনুমতি দেয়, যা সামঞ্জস্যের সমস্যা সৃষ্টি করতে পারে।
-
লাইন বিরতি: ঐতিহ্যগত বেস64 বাস্তবায়ন পড়ার জন্য লাইন বিরতি (সাধারণত প্রতি 76 অক্ষর) প্রবেশ করে, তবে আধুনিক অ্যাপ্লিকেশনগুলি প্রায়শই এগুলি বাদ দেয়।
-
URL-নিরাপদ বেস64: মানক বেস64 "+" এবং "/" অক্ষর ব্যবহার করে যা URL তে বিশেষ অর্থ রয়েছে। URL প্রসঙ্গে, URL-নিরাপদ বেস64 ব্যবহার করুন যা এগুলির পরিবর্তে "-" এবং "_" ব্যবহার করে।
-
শূন্যস্থান: ডিকোডিংয়ের সময়, কিছু বাস্তবায়ন শূন্যস্থান উপেক্ষা করে এবং অন্যরা সঠিক ইনপুট প্রয়োজন।
-
আকার বৃদ্ধি: বেস64 এনকোডিং ডেটার আকার প্রায় 33% বাড়িয়ে দেয় (3 ইনপুট বাইটের জন্য 4 আউটপুট বাইট)।
-
কার্যকারিতা: অত্যন্ত বড় ডেটার জন্য বেস64 এনকোডিং/ডিকোডিং কম্পিউটেশনালভাবে তীব্র হতে পারে। আমাদের টুল ডেবাউন্সিং ব্যবহার করে এমনকি বড় ইনপুটগুলির ক্ষেত্রেও প্রতিক্রিয়া বজায় রাখতে।
-
লাইভ কনভার্শন বিবেচনা: লাইভ কনভার্শন ফিচারটি অত্যন্ত বড় ইনপুটগুলির সাথে ব্যবহার করার সময় আপনি একটি সামান্য বিলম্ব দেখতে পারেন কারণ টুলটি ডেটা প্রক্রিয়া করে। এটি স্বাভাবিক এবং ব্রাউজারের কার্যকারিতা বজায় রাখতে সহায়ক।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
লাইভ কনভার্শন ফিচারটি কী?
লাইভ কনভার্শন ফিচারটি ইনপুট হিসাবে আপনি টাইপ করার সাথে সাথে আউটপুট স্বয়ংক্রিয়ভাবে আপডেট করে, আপনাকে এনকোড বা ডিকোড বোতামে ক্লিক করার প্রয়োজন ছাড়াই। এটি তাত্ক্ষণিক প্রতিক্রিয়া প্রদান করে এবং টুলটিকে আরও ইন্টারেক্টিভ এবং কার্যকরী করে তোলে।
লাইভ কনভার্শন কি বড় ইনপুটগুলির সাথে আমার ব্রাউজারকে ধীর করে দেবে?
আমাদের বাস্তবায়ন ডেবাউন্সিং ব্যবহার করে এমনকি বড় ইনপুটগুলির ক্ষেত্রেও ভাল কর্মক্ষমতা নিশ্চিত করে। রূপান্তরটি কেবল তখনই ঘটে যখন আপনি টাইপিং বন্ধ করেন, প্রতিটি কীস্ট্রোকের পরে নয়, যা দ্রুত টাইপিংয়ের সময় অতিরিক্ত প্রক্রিয়াকরণ প্রতিরোধ করে।
আমি কখন লাইভ কনভার্শন ব্যবহার করব এবং কখন ম্যানুয়াল কনভার্শন ব্যবহার করব?
লাইভ কনভার্শন ইন্টারঅ্যাকটিভ কাজের জন্য আদর্শ যেখানে আপনি তাত্ক্ষণিক প্রতিক্রিয়া চান। অত্যন্ত বড় ডেটাসেটগুলির জন্য বা আপনি রূপান্তরের আগে আপনার ইনপুট পর্যালোচনা করতে চান, আপনি ম্যানুয়াল কনভার্শন বিকল্পটি পছন্দ করতে পারেন।
লাইভ কনভার্শন কি এনকোডিং এবং ডিকোডিং উভয়ের জন্য কাজ করে?
হ্যাঁ, লাইভ কনভার্শন ফিচারটি উভয় দিকেই কাজ করে - টেক্সট থেকে বেস64 এবং বেস64 থেকে টেক্সটে।
যদি আমি লাইভ কনভার্শন সক্ষম অবস্থায় অবৈধ বেস64 ইনপুট করি তবে কী হবে?
যদি আপনি ডিকোড মোডে লাইভ কনভার্শন সক্ষম অবস্থায় অবৈধ বেস64 অক্ষর ইনপুট করেন, তবে টুলটি তাত্ক্ষণিকভাবে একটি ত্রুটি বার্তা প্রদর্শন করবে, আপনাকে অবিলম্বে সমস্যা চিহ্নিত এবং সংশোধন করতে সহায়তা করবে।
রেফারেন্স
- RFC 4648 - The Base16, Base32, and Base64 Data Encodings
- RFC 2045 - MIME Part One: Format of Internet Message Bodies
- MDN Web Docs: Base64 encoding and decoding
- Base64 - Wikipedia
- MIME - Wikipedia
আজই আমাদের বেস64 এনকোডার/ডিকোডার টুলটি চেষ্টা করুন টেক্সট এবং বেস64 ফরম্যাটের মধ্যে দ্রুত রূপান্তর করতে রিয়েল-টাইম কনভার্শনের সুবিধার সাথে। আপনি যদি API নিয়ে কাজ করেন, ইমেইল অ্যাটাচমেন্ট পরিচালনা করেন, বা টেক্সট ফরম্যাটে বাইনারি ডেটা এম্বেড করেন, আমাদের টুলটি প্রক্রিয়াটিকে সহজ এবং কার্যকর করে তোলে।
সম্পর্কিত সরঞ্জাম
আপনার কাজে দরকারী হতে পারে আরো টুল খুঁজে বের করুন