কিভাবে বাইট অ্যারে স্ট্রিং এবং তদ্বিপরীত রূপান্তর করতে?


248

আমাকে অ্যান্ড্রয়েডে বাইট অ্যারে স্ট্রিংয়ে রূপান্তর করতে হবে তবে আমার বাইট অ্যারেতে নেতিবাচক মান রয়েছে।

আমি যদি সেই স্ট্রিংটিকে আবার বাইট অ্যারে রূপান্তর করি তবে আমি যে মানগুলি পাচ্ছি তা মূল বাইট অ্যারের মান থেকে পৃথক।

সঠিক রূপান্তর পেতে আমি কী করতে পারি? রূপান্তরটি করতে আমি যে কোডটি ব্যবহার করছি তা নিম্নরূপ:

// Code to convert byte arr to str:
byte[] by_original = {0,1,-2,3,-4,-5,6};
String str1 = new String(by_original);
System.out.println("str1 >> "+str1);

// Code to convert str to byte arr:
byte[] by_new = str1.getBytes();
for(int i=0;i<by_new.length;i++) 
System.out.println("by1["+i+"] >> "+str1);

আমি এই সমস্যায় আটকে আছি


3
আপনি কেন প্রথমে স্থবির বাইনারি ডেটা একটি স্ট্রিংয়ে রূপান্তর করার চেষ্টা করছেন? চার্সেট সমস্যাগুলি ছাড়াও উত্তরগুলি ইতিমধ্যে উল্লিখিত রয়েছে, এছাড়াও আপনি স্ট্রিংকে গালি দিচ্ছেন এমন ঘটনাও রয়েছে। byte[]আপনার বাইনারি ডেটা এবং Stringআপনার পাঠ্যের জন্য একটি ব্যবহার করে কী ভুল হয়েছে ?
জোছিম সউর

8
@ জোয়াচিম - কখনও কখনও আপনার কাছে বাহ্যিক সরঞ্জাম থাকে যা স্টোর স্ট্রিংয়ের মতো কাজ করতে পারে। আপনি সেই ক্ষেত্রে বাইট অ্যারে (কোনও উপায়ে এনকোডড) স্ট্রিংয়ে রূপান্তর করতে সক্ষম হতে চান।
জেমস মুর

উত্তর:


377

আপনার বাইট অ্যারেতে অবশ্যই কিছু এনকোডিং থাকতে হবে। যদি আপনি নেতিবাচক মান পেয়ে থাকেন তবে এনকোডিংটি ASCII হতে পারে না। একবার আপনি বুঝতে পারেন, আপনি বাইটসের একটি সেট স্ট্রিং এ রূপান্তর করতে পারেন:

byte[] bytes = {...}
String str = new String(bytes, "UTF-8"); // for UTF-8 encoding

আপনি ব্যবহার করতে পারেন এমন কয়েকটি এনকোডিং রয়েছে, সান জাভাদোকগুলিতে চারসেট ক্লাসটি দেখুন


4
@ মরিসপ্যারি আপনি এটি ব্যাখ্যা করতে পারেন যে এটি কেন কাজ করবে না UTF-8?
আসিফ মোশতাক

12
@ অজানা কারণ ইউটিএফ -8 কিছু অক্ষরকে 2- বা 3- বাইট স্ট্রিং হিসাবে এনকোড করে। প্রতিটি বাইট অ্যারে বৈধ ইউটিএফ-8-এনকোড স্ট্রিং নয়। আইএসও -8859-1 একটি ভাল choise হবে: এখানে প্রতিটি অক্ষর বাইট হিসাবে এনকোড করা হয়।
মরিস পেরি

1
এটি কার্যকর হতে পারে তবে আপনার স্ট্রিং কনস্ট্রাক্টরকে কোনও মূল্যে ব্যবহার করা এড়ানো উচিত।
hfontanez

এক চরে একটি বাইট ম্যাপ করতে (8859-1 সহ) এবং কোনও ব্যতিক্রম হ্যান্ডলিং (nio.charset সহ):String str = new String(bytes, java.nio.charset.StandardCharsets.ISO_8859_1);
ইমান

1
জাভা ১.7 থেকে আপনি নতুন স্ট্রিং ব্যবহার করতে পারেন (বাইটস, স্ট্যান্ডার্ডচর্সেটস।
আউটফ_8

101

মধ্যে "সঠিক রূপান্তর" byte[]এবং Stringস্পষ্টভাবে রাষ্ট্র এনকোডিং আপনি ব্যবহার করতে চান হয়। যদি আপনি একটি দিয়ে শুরু করেন byte[]এবং এতে আসলে পাঠ্যের ডেটা না থাকে তবে কোনও "যথাযথ রূপান্তর" নেই। Stringগুলি পাঠ্যের byte[]জন্য, বাইনারি ডেটার জন্য এবং একমাত্র সত্যিকারের বুদ্ধিমান কাজ হ'ল যদি আপনি একেবারে না করেন তবে তাদের মধ্যে রূপান্তর এড়ানো

আপনার যদি Stringবাইনারি ডেটা ধরে রাখতে সত্যিই একটি ব্যবহার করতে হয় তবে বেস্ট 64 এনকোডিংটি ব্যবহার করা সবচেয়ে নিরাপদ ।


1
হ্যাঁ, চরিত্রের এনকোডিং এমন একটি জিনিস যা আপনার স্ট্রিং এবং বাইটগুলির মধ্যে রূপান্তর করতে হবে
রায়েডওয়াল্ড

4
বেস 64 এবং আপনি আমার জীবন বাঁচিয়েছেন
mstzn

2
বেস 64 এনকোডিংটি আমার সমস্যার সমাধান করেছে। ইউটিএফ -8 সমস্ত ইনপুটগুলির জন্য কাজ করেনি
আল-আলামিন

37

মূল সমস্যাটি হ'ল (আমার মনে হয়) আপনি অজান্তে একটি অক্ষর সেট ব্যবহার করছেন যার জন্য:

 bytes != encode(decode(bytes))

কিছু ক্ষেত্রে। ইউটিএফ -8 এই জাতীয় চরিত্রের সেট উদাহরণ। বিশেষত, বাইটের নির্দিষ্ট ক্রমগুলি ইউটিএফ -8 এ বৈধ এনকোডিং নয়। যদি ইউটিএফ -8 ডিকোডারটি এই সিকোয়েন্সগুলির মধ্যে একটির মুখোমুখি হয় তবে আপত্তিজনক বাইটগুলি বাতিল করতে বা "এই জাতীয় কোনও চরিত্রের জন্য" ইউনিকোড কোডপয়েন্ট হিসাবে তাদের ডিকোড করা দায়বদ্ধ। স্বাভাবিকভাবেই, আপনি যখন অক্ষরগুলি বাইট হিসাবে এনকোড করার চেষ্টা করবেন তখন ফলাফলটি ভিন্ন হবে।

সমাধানটি হ'ল:

  1. আপনি যে অক্ষরটি এনকোডিং ব্যবহার করছেন তা সম্পর্কে স্পষ্ট হয়ে উঠুন; যেমন String.toByteArrayএকটি স্পষ্ট অক্ষরেখার সাথে একটি স্ট্রিং কনস্ট্রাক্টর এবং পদ্ধতি ব্যবহার করুন ।
  2. আপনার বাইট ডেটার জন্য সঠিক অক্ষর সেটটি ব্যবহার করুন ... বা বিকল্পভাবে একটি (যেমন "ল্যাটিন -১" যেখানে সমস্ত বাইট সিকোয়েন্সগুলি বৈধ ইউনিকোড অক্ষরগুলিতে মানচিত্র করে।
  3. যদি আপনার বাইটগুলি (সত্যই) বাইনারি ডেটা হয় এবং আপনি এগুলি একটি "পাঠ্য ভিত্তিক" চ্যানেলের মাধ্যমে সঞ্চারিত / গ্রহণ করতে সক্ষম হতে চান তবে বেস 64 এনকোডিং এর মতো কিছু ব্যবহার করুন ... যা এই উদ্দেশ্যে তৈরি করা হয়েছে

1
"ল্যাটিন -১" এনকোডিং ব্যবহারের পরামর্শের জন্য ধন্যবাদ!
গঞ্জো

31

Stringঅ্যারে দিয়ে আমাদের কেবল একটি নতুন নির্মাণ করা দরকার : http://www.mkyong.com/java/how-do-convert-byte-array-to-string-in-java/

String s = new String(bytes);

ফলস্বরূপ স্ট্রিংয়ের বাইটগুলি আপনি কী চরসেটটি ব্যবহার করেন তার উপর নির্ভর করে। নতুন স্ট্রিং (বাইটস) এবং নতুন স্ট্রিং (বাইটস, চরসেট.ফোর্নাম ("ইউটিফ -8")) এবং নতুন স্ট্রিং (বাইটস, চারসেট.ফোর্নাম ("utf-16")) এর সবকটির আলাদা আলাদা বাইট অ্যারে থাকবে যখন আপনি স্ট্রিং # কল করবেন getBytes () (ডিফল্ট চরসেটের উপর নির্ভর করে)


9
না। ফলাফল কী স্ট্রাইটের বাইটগুলি আপনি কোন চরসেটটি ব্যবহার করেন তার উপর নির্ভর করে। new String(bytes)এবং new String(bytes, Charset.forName("utf-8"))এবং new String(bytes, Charset.forName("utf-16"))সব বিভিন্ন বাইট অ্যারে থাকবে যখন আপনি কল String#getBytes()(ডিফল্ট অক্ষরসেট উপর নির্ভর করে)
এন ডু Toit

1
বিভ্রান্তিকর। charগুলি ফলে (এবং যার ফলে টেক্সট প্রদর্শিত হয়) Stringযখন ডিকোডিং পৃথক bytesভিন্নভাবে। ডিফল্ট এনকোডিং ব্যবহার করে বাইটে ফিরে রূপান্তর ( String#getBytes("charset")অন্যথায় নির্দিষ্ট করতে ব্যবহার করুন ) অগত্যা পৃথক হবে কারণ এটি বিভিন্ন ইনপুট রূপান্তর করে। স্ট্রিংগুলি byte[]সেগুলি যেগুলি তৈরি করা হয়েছিল তা সংরক্ষণ করে না , charএর কোনও এনকোডিং নেই এবং Stringঅন্যথায় এটি সংরক্ষণ করে না।
জ্যাপল

14

ব্যবহার new String(byOriginal)এবং ফিরে রূপান্তর byte[]ব্যবহার getBytes()দুই নিশ্চয়তা দেয় না byte[]সমান মান। এই কলে কারণে StringCoding.encode(..)যা এনকোড হবে Stringথেকে Charset.defaultCharset()। এই এনকোডিংয়ের সময়, এনকোডারটি অজানা অক্ষরগুলি প্রতিস্থাপন এবং অন্যান্য পরিবর্তনগুলি বেছে নিতে পারে। অতএব, String.getBytes()আপনি মূলত কন্সট্রাক্টরের কাছে গেছেন বলে ব্যবহারের ফলে সমান অ্যারে না ফেরানো যেতে পারে।


9

কেন সমস্যাটি ছিল: যেমন কেউ ইতিমধ্যে নির্দিষ্ট করেছে: আপনি যদি বাইট দিয়ে শুরু করেন [] এবং বাস্তবে এতে পাঠ্যের ডেটা থাকে না, কোনও "যথাযথ রূপান্তর" নেই। স্ট্রিংগুলি পাঠ্যের জন্য, বাইট [] বাইনারি ডেটার জন্য হয় এবং কেবলমাত্র বুদ্ধিমানের কাজ হ'ল যদি আপনি একেবারেই না করেন তবে তাদের মধ্যে রূপান্তর এড়ানো।

আমি এই সমস্যাটি পর্যবেক্ষণ করছিলাম যখন আমি একটি পিডিএফ ফাইল থেকে বাইট [] তৈরি করার চেষ্টা করছিলাম এবং তারপরে এটি স্ট্রিংয়ে রূপান্তরিত করেছিলাম এবং তারপরে স্ট্রিংটিকে ইনপুট হিসাবে নিয়ে যাচ্ছিলাম এবং ফাইলটিতে ফিরে রূপান্তর করছি।

সুতরাং নিশ্চিত হয়ে নিন যে আপনার এনকোডিং এবং ডিকোডিং যুক্তিটি আমার মতো। আমি স্পষ্টভাবে বাইট [] বেস 64 এ এনকোড করেছি এবং ফাইলটি আবার তৈরি করতে ডিকোড করেছি।

ব্যবহারের-কেস: কারণে কিছু সীমাবদ্ধতা আমি পাঠানো করার চেষ্টা ছিল byte[]request(POST)এবং প্রক্রিয়া নিম্নরূপ ছিল:

পিডিএফ ফাইল >> বেস64.encodeBase64 (বাইট []) >> স্ট্রিং >> অনুরোধ প্রেরণ করুন (POST) >> স্ট্রিং পান >> বেস64.decodeBase64 (বাইট []) >> বাইনারি তৈরি করুন

এটি চেষ্টা করুন এবং এটি আমার জন্য কাজ করেছে ..

File file = new File("filePath");

        byte[] byteArray = new byte[(int) file.length()];

        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            fileInputStream.read(byteArray);

            String byteArrayStr= new String(Base64.encodeBase64(byteArray));

            FileOutputStream fos = new FileOutputStream("newFilePath");
            fos.write(Base64.decodeBase64(byteArrayStr.getBytes()));
            fos.close();
        } 
        catch (FileNotFoundException e) {
            System.out.println("File Not Found.");
            e.printStackTrace();
        }
        catch (IOException e1) {
            System.out.println("Error Reading The File.");
            e1.printStackTrace();
        }

6

এটি আমার পক্ষে ভাল কাজ করে:

String cd="Holding some value";

স্ট্রিং থেকে বাইটে রূপান্তর করা []:

byte[] cookie = new sun.misc.BASE64Decoder().decodeBuffer(cd);

বাইট [] থেকে স্ট্রিংয়ে রূপান্তর করা:

cd = new sun.misc.BASE64Encoder().encode(cookie);

5
private static String toHexadecimal(byte[] digest){
        String hash = "";
    for(byte aux : digest) {
        int b = aux & 0xff;
        if (Integer.toHexString(b).length() == 1) hash += "0";
        hash += Integer.toHexString(b);
    }
    return hash;
}

1
এটি প্রশ্নের উত্তর দেয় না।
james.garriss

প্রশ্নের উত্তর দেয় না তবে দরকারী ছিল +1
অলস নিনজা

5

আমি এমন কিছু লক্ষ্য করেছি যা উত্তরের কোনওটিতে নেই। আপনি বাইট অ্যারে অক্ষরে প্রতিটি বাইট কাস্ট করতে পারেন এবং এগুলি একটি চর অ্যারেতে রেখে দিতে পারেন। তারপরে স্ট্রিংটি হচ্ছে

new String(cbuf)
যেখানে সিবিউফটি চর অ্যারে। পিছনে রূপান্তর করতে, স্ট্রিংয়ের মধ্য দিয়ে লুপটি প্রতিটি চরকে বাইট অ্যারেতে রেখে বাইটে কাস্ট করে এবং এই বাইট অ্যারেটি প্রথমটির মতো হবে।


public class StringByteArrTest {

    public static void main(String[] args) {
        // put whatever byte array here
        byte[] arr = new byte[] {-12, -100, -49, 100, -63, 0, -90};
        for (byte b: arr) System.out.println(b);
        // put data into this char array
        char[] cbuf = new char[arr.length];
        for (int i = 0; i < arr.length; i++) {
            cbuf[i] = (char) arr[i];
        }
        // this is the string
        String s = new String(cbuf);
        System.out.println(s);

        // converting back
        byte[] out = new byte[s.length()];
        for (int i = 0; i < s.length(); i++) {
            out[i] = (byte) s.charAt(i);
        }
        for (byte b: out) System.out.println(b);
    }

}


2

এখানে কয়েকটি পদ্ধতি যা বাইটের অ্যারেটিকে স্ট্রিংয়ে রূপান্তর করে। আমি তাদের পরীক্ষা করেছি তারা ভাল কাজ করে।

public String getStringFromByteArray(byte[] settingsData) {

    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(settingsData);
    Reader reader = new BufferedReader(new InputStreamReader(byteArrayInputStream));
    StringBuilder sb = new StringBuilder();
    int byteChar;

    try {
        while((byteChar = reader.read()) != -1) {
            sb.append((char) byteChar);
        }
    }
    catch(IOException e) {
        e.printStackTrace();
    }

    return sb.toString();

}

public String getStringFromByteArray(byte[] settingsData) {

    StringBuilder sb = new StringBuilder();
    for(byte willBeChar: settingsData) {
        sb.append((char) willBeChar);
    }

    return sb.toString();

}

2

যদিও

new String(bytes, "UTF-8")

এটি সঠিক UnsupportedEncodingExceptionযা এটি ছুড়ে ফেলে যা আপনাকে চেক করা ব্যতিক্রমগুলি মোকাবেলা করতে বাধ্য করে। বাইট অ্যারেটিকে রূপান্তর করতে আপনি জাভা ১.6 থেকে বিকল্প হিসাবে অন্য নির্মাণকারীর হিসাবে ব্যবহার করতে পারেন String:

new String(bytes, StandardCharsets.UTF_8)

এটি একটি ব্যতিক্রম ছুঁড়ে না।

ফিরে রূপান্তরও এর সাথে করা উচিত StandardCharsets.UTF_8:

"test".getBytes(StandardCharsets.UTF_8)

আবার আপনি চেক করা ব্যতিক্রমগুলি মোকাবেলা করা এড়াতে পারেন।


1

আমি এই পদ্ধতিতে বাইট অ্যারে একটি স্ট্রিংয়ে রূপান্তরিত করতে সফল হয়েছি:

public static String byteArrayToString(byte[] data){
    String response = Arrays.toString(data);

    String[] byteValues = response.substring(1, response.length() - 1).split(",");
    byte[] bytes = new byte[byteValues.length];

    for (int i=0, len=bytes.length; i<len; i++) {
        bytes[i] = Byte.parseByte(byteValues[i].trim());
    }

    String str = new String(bytes);
    return str.toLowerCase();
}

1

যদিও বেস 64৪ টি এনকোডিং নিরাপদ এবং কেউ "সঠিক উত্তর" দিতে পারে, আমি একটি জাভা বাইট অ্যারেটিকে জাভা স্ট্রিংকে যেমন-তে / তে রূপান্তর করার উপায় সন্ধান করতে এসে পৌঁছেছি। এটি হ'ল, যেখানে বাইট অ্যারের প্রতিটি সদস্য তার স্ট্রিং প্রতিরূপে অক্ষত থাকে, এনকোডিং / পরিবহনের জন্য কোনও অতিরিক্ত স্থানের প্রয়োজন হয় না।

8 বিট স্বচ্ছ এনকোডিংগুলি বর্ণনা করা এই উত্তরটি আমার পক্ষে খুব সহায়ক ছিল। আমি ব্যবহার করতামISO-8859-1বাইনারি ডেটা টেরাবাইটের উপরে বেস 64 এনকোডিংয়ের জন্য প্রয়োজনীয় স্ফীত স্থান প্রয়োজন ব্যতীত সফলভাবে (বাইনারি <-> স্ট্রিং) রূপান্তর করতে ব্যবহার করি, তাই আমার ব্যবহারের ক্ষেত্রে নিরাপদ - ওয়াইএমএমভি।

আপনার / কখন পরীক্ষা করা উচিত তা ব্যাখ্যা করতেও এটি সহায়ক ছিল


0
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;    

private static String base64Encode(byte[] bytes)
{
    return new BASE64Encoder().encode(bytes);
}

private static byte[] base64Decode(String s) throws IOException
{
    return new BASE64Decoder().decodeBuffer(s);
}

কেন? বাইটকে স্ট্রিংয়ে রূপান্তর করতে কেন বেস 64 দিয়ে যাবে? ওভারহেড
james.garriss

0

এখানে কাজের কোড।

            // Encode byte array into string . TemplateBuffer1 is my bytearry variable.

        String finger_buffer = Base64.encodeToString(templateBuffer1, Base64.DEFAULT);
        Log.d(TAG, "Captured biometric device->" + finger_buffer);


        // Decode String into Byte Array. decodedString is my bytearray[] 
        decodedString = Base64.decode(finger_buffer, Base64.DEFAULT);

-1

উভয় রূপান্তরগুলিতে একটি 8-বিট চরসেট নির্দিষ্ট করার চেষ্টা করুন। উদাহরণস্বরূপ আইএসও -8859-1।


-1

বাইট স্ট্রিমের পরিবর্তে চর স্ট্রিম যা Stringব্যবহার করে বাইটগুলি পড়ুন ByteArrayInputStreamএবং এটি মুড়িয়ে দিন BufferedReaderযা বাইট ডেটা স্ট্রিংয়ে রূপান্তর করে।

package com.cs.sajal;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class TestCls {

    public static void main(String[] args) {

        String s=new String("Sajal is  a good boy");

        try
        {
        ByteArrayInputStream bis;
        bis=new ByteArrayInputStream(s.getBytes("UTF-8"));

        BufferedReader br=new BufferedReader(new InputStreamReader(bis));
        System.out.println(br.readLine());

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
}

আউটপুট হল:

সজল ভাল ছেলে


-1

রূপান্তর করার জন্য আপনি লুপের জন্য সহজ ব্যবহার করতে পারেন:

public void byteArrToString(){
   byte[] b = {'a','b','$'};
   String str = ""; 
   for(int i=0; i<b.length; i++){
       char c = (char) b[i];
       str+=c;
   }
   System.out.println(str);
}


-3

স্ট্রিং হল চরের সংগ্রহ (16 বিট স্বাক্ষরযুক্ত)। সুতরাং আপনি যদি নেতিবাচক সংখ্যাগুলিকে একটি স্ট্রিংয়ে রূপান্তর করতে চলেছেন তবে সেগুলি অনুবাদে হারিয়ে যাবে।


1
-1: এটি ভুল। জাভাতে 'বাইট' একটি স্বাক্ষরিত ধরণ থাকলেও এগুলি লাইব্রেরি কোড দ্বারা স্বাক্ষরিত হিসাবে বিবেচনা করা হয় যা অক্ষর সেট এনকোডিং এবং ডিকোডিং করে।
স্টিফেন সি

একটি স্বাক্ষরযুক্ত উদাহরণে কেন একটি স্বাক্ষরযুক্ত 8 বিট ডেটাটাইপ থাকাই একটি ভাষায় থাকা ভাল ধারণা। অপ্রয়োজনীয় বিভ্রান্তি এড়ায়; ^)
তুষারপাত

জাভা চরটি 16 বিট হবে বলে ধরে নিয়ে সাবধান হন, জাভার ইউটিএফ -16 এর কারণে তারা 32 বিট পর্যন্ত প্রসারিত করতে পারবেন
জো প্লান্ট

1
@ টুড আসলে হ্যাঁ, ইউটিএফ -16 হিসাবে সংরক্ষণ করা হলে কিছু ইউনিকোড অক্ষর দুটি কোড পয়েন্ট, অর্থাৎ 32 বিট নেয়। ইউটিএফ -8 এ একই ঘটে: কিছু অক্ষর দুটি / তিন / চার কোড পয়েন্ট, অর্থাৎ 16/24/32 বিট ব্যবহার করে। প্রকৃতপক্ষে, ইউটিএফটি হ'ল (যেমন ইউটিএফ! = ইউনিকোড)।
সিএএফএক্সএক্স এক্স

1
@ চালিত আপনি প্রথম সারোগেট পাবেন - অর্থাত্ চরিত্রের প্রথম "অর্ধ"। স্ট্রিং.চারআট পদ্ধতি এবং চরিত্র শ্রেণীর জন্য দস্তাবেজগুলি দেখুন ।
সিএএফএক্সএক্স

-3
public class byteString {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String msg = "Hello";
        byte[] buff = new byte[1024];
        buff = msg.getBytes("UTF-8");
        System.out.println(buff);
        String m = new String(buff);
        System.out.println(m);


    }

}

বাইটস পাওয়ার পক্ষে যুক্তি হিসাবে চরসেট এনকোডিংটি পাস করুন
শ্যাম শ্রীনিবাসন

1
কোডটি ছাড়াও একটি ব্যাখ্যা দিয়ে আপনি এই উত্তরটি শিখতে চাইতে পারেন।
চার্লি শ্লিয়েসার

-5

বেস 64 ব্যবহার করুন এবং আপনার সমস্যার সমাধান করুন use এটি ব্যবহার করা খুব সহজ। http://iharder.sourceforge.net/current/java/base64/


5
কেবলমাত্র একটি লিঙ্কের চেয়ে বেশি ধারণ করার জন্য এই উত্তরের উন্নতি বিবেচনা করুন। মেটা.স্ট্যাকেক্সেঞ্জাওয়েজ / প্রশ্নগুলি / ৮২৩১/২ দেখুন ।
রব হুরস্কা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.