আমি জাভাতে বাইট অ্যারে কীভাবে বেস 64 তে রূপান্তর করব?


120

ঠিক আছে, আমি জানি কীভাবে এটি সি # তে করা যায়।

এটি এতটা সহজ:

Convert.ToBase64String(byte[])
and Convert.FromBase64String(string) to get byte[] back.

আমি জাভাতে এটি কীভাবে করতে পারি?

উত্তর:


224

জাভা 8+

বাইট অ্যারেগুলি এনকোড বা ডিকোড করুন:

byte[] encoded = Base64.getEncoder().encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = Base64.getDecoder().decode(encoded);
println(new String(decoded))    // Outputs "Hello"

অথবা আপনি যদি কেবল স্ট্রিংগুলি চান:

String encoded = Base64.getEncoder().encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.getDecoder().decode(encoded.getBytes()));
println(decoded)    // Outputs "Hello"

আরও তথ্যের জন্য, বেস 64 দেখুন

জাভা <8

বেস 64 জাভা সংস্করণ 8 এর চেয়ে কম বান্ডিল হয় না আমি অ্যাপাচি কমন্স কোডেক ব্যবহার করার পরামর্শ দিই ।

সরাসরি বাইট অ্যারেগুলির জন্য:

Base64 codec = new Base64();
byte[] encoded = codec.encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = codec.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

অথবা আপনি যদি কেবল স্ট্রিংগুলি চান:

Base64 codec = new Base64();
String encoded = codec.encodeBase64String("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(codec.decodeBase64(encoded));
println(decoded)    // Outputs "Hello"

বসন্ত

যদি আপনি ইতিমধ্যে একটি বসন্ত প্রকল্পে কাজ করছেন, আপনি তাদের org.springframework.util.Base64Utilsশ্রেণি আরও অরগনোমিক দেখতে পাবেন :

সরাসরি বাইট অ্যারেগুলির জন্য:

byte[] encoded = Base64Utils.encode("Hello".getBytes());
println(new String(encoded))    // Outputs "SGVsbG8="

byte[] decoded = Base64Utils.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

অথবা আপনি যদি কেবল স্ট্রিংগুলি চান:

String encoded = Base64Utils.encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = Base64Utils.decodeFromString(encoded);
println(new String(decoded))    // Outputs "Hello"

অ্যান্ড্রয়েড (জাভা <8 সহ)

আপনি যদি জাভা 8 এর আগে অ্যান্ড্রয়েড এসডিকে ব্যবহার করছেন তবে আপনার সেরা বিকল্পটি হ'ল বান্ডেল ব্যবহার করা android.util.Base64

সরাসরি বাইট অ্যারেগুলির জন্য:

byte[] encoded = Base64.encode("Hello".getBytes());
println(new String(encoded))    // Outputs "SGVsbG8="

byte [] decoded = Base64.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

অথবা আপনি যদি কেবল স্ট্রিংগুলি চান:

String encoded = Base64.encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.decode(encoded));
println(decoded)    // Outputs "Hello"

29

ব্যবহার করুন:

byte[] data = Base64.encode(base64str);

এনকোডিং বেস 64 এ রূপান্তর করে

কোডটি কাজ করার জন্য আপনাকে আপনার প্রকল্প থেকে কমন্স কোডেকের রেফারেন্স করতে হবে ।

জাভা 8 এর জন্য :

import java.util.Base64

21
বেস বেস 64 এর এনকোড / ডিকোডের জন্য পদ্ধতিগুলি স্থিতিশীল তাই আপনার নতুন কোনও অবজেক্ট তৈরি করার দরকার নেই। তারপরে: বাইট [] ডেটা = বেস64.ডেকোড (বেস64স্ট্রার); যথেষ্ট।
আর্নেস্তো ক্যাম্পোহেরমোসো

15

অতিরিক্তভাবে, আমাদের অ্যান্ড্রয়েড বন্ধুদের জন্য (এপিআই স্তর 8):

import android.util.Base64

...

Base64.encodeToString(bytes, Base64.DEFAULT);

7

আপনি জাভা সহ স্প্রিং ফ্রেমওয়ার্ক ব্যবহার করছেন এমন পরিস্থিতিতে, খুব সহজ উপায় রয়েছে।

  1. নিম্নলিখিতটি আমদানি করুন।

    আমদানি org.springframework.util.Base64Utils;
  2. এই মত রূপান্তর।

    বাইট [] বাইটায়ার = {0,1,2,3,4};
    স্ট্রিং এনকোডডেক্সট = বেস64Utils.encodeToString (বাইটার);
    

    ডিকোড করার জন্য আপনি বেস 64 ইউটিস ক্লাসের ডিকোডটোস্ট্রিং পদ্ধতিটি ব্যবহার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.