简体   繁体   English

在Android中将字节数组转换为base64字符串时获取损坏的编码数据

[英]Get corrupted encoded data while converting byte array to base64 string in android

I am developing an android application in my application I wanted to convert byte array of image to base64 string .But when I am converting i get corrupted result. 我正在我的应用程序中开发一个android应用程序,我想将图像的字节数组转换为base64字符串。但是当我转换时,我得到了损坏的结果。

This is my AsyncTask 这是我的AsyncTask

 public class Test1 extends AsyncTask<Void, byte[], String> {
    @Override
    protected String doInBackground(Void... voids) {

        try {
            myClient2 = new Socket("192.168.1.1", 6666);

            System.out.println("a:" + myClient2);
            try {
                JSONObject jsonObject1 = new JSONObject();
                jsonObject1.put("cmd", "request_download_file");
                jsonObject1.put("file_name", filename1);
                jsonObject1.put("verification", "CVS");


                System.out.println("File name========" + filename1);

                System.out.println("b111111111111111" + jsonObject1);
                myClient2.setKeepAlive(true);
                System.out.println(myClient2.getLocalAddress() + " " + myClient2.getLocalSocketAddress() + " " + myClient2.getKeepAlive());
                System.out.println(myClient2.getKeepAlive());
                try {

                    DataInputStream dis1 = new DataInputStream(myClient2.getInputStream());

                    //reads file length from datainputstream
                    DataOutputStream dos1 = new DataOutputStream(myClient2.getOutputStream());
                    jsonReader1 = new JsonReader(new InputStreamReader(dis1));//, "UTF-8"));

                    InputStreamReader inputReader = new InputStreamReader(dis1);

                    writer1 = new OutputStreamWriter(dos1);//, StandardCharsets.UTF_8)
                    writer1.write(jsonObject1.toString());
                    System.out.println("c");
                    writer1.flush();

                    BufferedInputStream input = new BufferedInputStream(myClient2.getInputStream());
                    Log.e("input", "input" + input);

                    byte[] data = new byte[1024];

                    BufferedReader brdr = new BufferedReader(inputReader, 300);

                    boolean status = false;


                    int countPackets = 0;

                    while (!status) {

                        byte[] buffer = new byte[1024]; // or 4096, or more

                        int bytesRead = input.read(buffer, 0, buffer.length);

                        int availableBytes = input.available();


                        str2 = str2.append(bytesRead);

                        ImageDataArray = concat(ImageDataArray, buffer);

                        countPackets = countPackets + buffer.length;

                        System.out.println(ImageDataArray.length);




                        System.out.println(countPackets);

                        System.out.println("get" + ImageDataArray);


                        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                                .format(new Date());


                        System.out.println("check--" + timeStamp + "--");


                        if (input.available() != 0) {
                            System.out.println("String:" + str1.toString());
                        } else break;
                    }

                    System.out.println("--------------------out of while ------------------");

                    System.out.println("filename===========" + filename1);
                    // String filename = String.format("%s%s", Environment.getExternalStorageDirectory().getAbsoluteFile(), "/SteelmanPro/1020/images/image34" + ".jpg");

                    File file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile().toString(), "/SteelmanPro/1020/images/image");



                    if (!file.exists()) {

                        file.mkdirs();
                        System.out.println("File Created++++++++++++++++++");

                    }


                    int position = - 1;

                    for (int i = 0; i < ImageDataArray.length - 2; i++) {
                        if (ImageDataArray[i] == (byte) 0xff && ImageDataArray[i + 1] == (byte) 0xdf) {
                            position = i;
                            Log.e("position", "position." + position);

                            break;
                        }
                    }


                    write(ImageDataArray,file.toString() +filename1);


                    String encodedImage = Base64.encodeToString((byte[])ImageDataArray, Base64.DEFAULT);
                   Log.i("Base64=========",encodedImage.toString());


                    int a = data.length;

                    Log.e("data.length", "data.length" + a);



                    System.out.println("String:" + str1.toString());
                    normalLoginResponse = hexChars;


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

            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("send JSON error");
            }
            System.out.println("d");
            System.out.println("e");
            System.out.println("f");
            System.out.println("g");

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("creation exception1");

        }

        return normalLoginResponse;
    }


    @Override
    protected void onPostExecute(String response) {

}

Logcat logcat的

Base64=========: eyJjbWQiOiJyZXNwb25zZV9kb3dubG9hZF9maWxlIiwicmVzdWx0Ijoic3VjY2VzcyIsImZpbGVf
                                                             c2l6ZSI6IjQwMzgzMyJ9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y
                                                             /+ERHUV4aWYAAE1NACoAAAAIAAwBAAADAAAAAQQAAAABAQADAAAAAQMAAAABAgADAAAAAwAAAJ4B
                                                             BgADAAAAAQACAAABEgADAAAAAQABAAABFQADAAAAAQADAAABGgAFAAAAAQAAAKQBGwAFAAAAAQAA
                                                             AKwBKAADAAAAAQACAAABMQACAAAAHAAAALQBMgACAAAAFAAAANCHaQAEAAAAAQAAAOQAAAEcAAgA
                                                             CAAIAAr8gAAAJxAACvyAAAAnEEFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cwAyMDE2OjA1OjI1
                                                             IDE4OjE4OjM2AAAEkAAABwAAAAQwMjIxoAEAAwAAAAH//wAAoAIABAAAAAEAAAXcoAMABAAAAAEA
                                                             AARlAAAAAAAAAAYBAwADAAAAAQAGAAABGgAFAAAAAQAAAWoBGwAFAAAAAQAAAXIBKAADAAAAAQAC
                                                             AAACAQAEAAAAAQAAAXoCAgAEAAAAAQAAD5sAAAAAAAAASAAAAAEAAABIAAAAAf/Y/+0ADEFkb2Jl
                                                             X0NNAAL/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwM
                                                             DAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEM
                                                             DAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAB4AKADASIAAhEB
                                                             AxEB/90ABAAK/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAA
                                                             AAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMk
                                                             FVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk
                                                             9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIE
                                                             QVFhcSITBTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLy
                                                             s4TD03Xj80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEA
                                                             PwDgk8lKE8IKVuKeSmhOAkpcEqQKiApAJKXkp5KQCeElKkpSU4anDUlLap5Kfan2pKWkp5KfaltS
                                                             UtuKUlPtT7UlMEjKntTbUlIyE0Im1NtSU//Q4WE8KQCUIKYwpAJwFIBJTENUg1SAUg1JTENUg1SD
                                                             VMNSUwDU4aiBqkGpKRhifYihik2pzvotLvgJSUh2JbFYOPY36Tdv9Ytb/wBW5qhDCYD2EjmHsP5H
                                                             I0pFtS2ooDXGGlrj4Ag/9SU5rI5BQUg2pbUbamLUlIdqYtRS1MWpKf/R4kJ0wCkgpQCkAmAKkAUl
                                                             MgFIBMNFJ1dwg2OFFEAuI/nXa/RE/QYipk1smAJJ7DlTAG4s1e8c1sgkf13H9HX/AGnKo7qFMEe/
                                                             Yf8AB1+0n/jr3f8AUVKDuqWhuylrKGDhrBP/AEne3/oJKbd1jqiXlllVQ72sDwD/AMbj2H/z0gDK
                                                             e+0WU5WM5kQKLCWj+t+l9F27+0qF2QbtLi+wDUAkxPkPooYHtJLRtJ0JS+inUbj9Sex5LfWfINPp
                                                             uDmdw9rxU5/t+jYr+E7Ma1wdVlW2NYC4VU7pLfZvt/Oa1v8AIrsXNhrR7toA117Lr8DH/wCbHQB1
                                                             7Ol/VM4FvSMWwktqaRrn21O/wux36H/RIhDiVW4VLTYWVX7eA6Zn930v3lpUZzrW1hgZQyzRrQAD
                                                             v4Nbmw1u9jvzFz2U8jIeQ42PLjve8kuJIHuc785yYZB+y2Vk7fex7YPxrf8A+iv8xJLvO6X1fLv/
                                                             AEtWFdWD7LLvYf8AwL6P9tqpWZzMK44uZi24VrPpMaQ9on84bfT3Md/pK/UWl0rqjsjFY60EXCGP
                                                             EH3GPbY3+u36av5XQczrLGV3Y/pMrMsvtOxwB+kxjYfa5j/3PTQA7Ktxce+rIe0UZDXBxAJJ+iJ1
                                                             e9j9r2tYim0N0llx8WtLRH9f2+5bLPq30HpbYy8gNd3Y2GE/+fst/wDnJzk/VatjmNx9zSCC7Y4u
                                                             /s22u3sd/KRrxVY7OJuYeJHkUiFXry6bMxuO1r2kn2F4gOj3R/m/yUcnUoEKf//S44VlTFSstoKM
                                                             zGsdu9Ot1prY6xzWDcQxn85Y79ytn59j/Ykpp+mGgudo0ckqDb6QfoFw+MIOS592TW6u0WVtjdWG
                                                             uaGbmhz5dZHqWMe70fb9P0/Ur/QojWHsISGotR00bD8prqHspa2i0j2PAEgj+UdzljZH24kuvD3/
                                                             AMrkfe1araUZlUI0i3n2WsJh2h80YMrdEHnhbjsSi0fpa2v/AKwBP3qI6TgkAeloOBudA+HuSpTj
                                                             CkTEx4k/3InpVBoDtdvGq2WdJwhxWR/bd/5JWsL6sDqLzXjUPsA+m42ObW3/AIywu2f2fppUprfU
                                                             /oWL1DOszc0x0jpjfWzHWaMe8TZVj/yqtrfWv/4P9H/hU/WbOs/Wfq

if anyone know this please help me 如果有人知道这一点,请帮助我

You are using BufferedReader to receive the bytes of an image file. 您正在使用BufferedReader接收图像文件的字节。

That will not work as you have seen as a reader is for text data. 就像您看到的是文本数据的阅读器一样,这将不起作用。

So do away with it. 因此,请消除它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM