मैं जावा में बाइट सरणी को बेस 64 में कैसे बदलूं?


120

ठीक है, मुझे पता है कि इसे सी # में कैसे करना है।

यह उतना ही सरल है:

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

मैं जावा में यह कैसे कर सकता हूं?

जवाबों:


226

जावा 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"

अधिक जानकारी के लिए, Base64 देखें

जावा <8

Base64 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"

Android (Java <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);

एन्कोडिंग Base64 में कनवर्ट करता है

आपको उस कोड को काम करने के लिए अपने प्रोजेक्ट से कॉमन कॉनकोड का संदर्भ देना होगा ।

जावा 8 के लिए :

import java.util.Base64

21
वर्ग Base64 के एन्कोड / डिकोड के लिए तरीके स्थिर हैं, इसलिए आपको एक नई वस्तु बनाने की आवश्यकता नहीं है। तब: बाइट [] डेटा = बेस 64.डबल (बेस 64 स्ट्रैट); पर्याप्त है।
अर्नेस्टो कैम्पोहर्मोसो

15

इसके अतिरिक्त, हमारे Android मित्रों (API स्तर 8) के लिए:

import android.util.Base64

...

Base64.encodeToString(bytes, Base64.DEFAULT);

7

यदि आप जावा के साथ स्प्रिंग फ्रेमवर्क का उपयोग कर रहे हैं, तो एक आसान तरीका है।

  1. निम्नलिखित आयात करें।

    आयात org.springframework.util.Base64Utils;
  2. इस तरह कन्वर्ट।

    बाइट [] बायटियर = {0,1,2,3,4};
    स्ट्रिंग एन्कोडेड टेक्स्ट = Base64Utils.encodeToString (bytearr);
    

    डिकोड करने के लिए आप बेस 64 यूटिल्स क्लास की डिकोडोट्रिंग विधि का उपयोग कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.