2012-08-14 148 views
0

在我的程序中我收到一個字節數組。第一部分實際上是一個字符串,第二部分是一個轉換成字節數組的圖片。
像這樣:將字節數組與圖像轉換爲字符串

<STX>1<US>length of picture<ETX> here are the bytes... 

目前,我有這個前後ETX後

string incomingMessage = incomingBytes.toString(); 

String messagePart = incomingMessage.substring(0, firstETX); 
String dataPart = incomingMessage.substring(firstETX, incomingMessage.length()); 

後來我用

dataPart.getBytes(); 

要轉換回成的部分分開的字節數組。

但我認爲轉換包含圖像的字節會導致一些問題,因爲我的程序不會將字節轉換爲圖像。

那麼如何獲得ETX之後的字節而不將其轉換爲字符串呢? 或者我如何保留原始字節,以便我可以使用它們?

THX

+0

所以你得到的字節數組實際上包含一些ASCII字符在開始和原始圖像後的字節?或者你收到一個帶有base64格式字節的字符串? – Renard 2012-08-14 14:24:00

+0

是的,字節數組包含一些ASCII字符。 ETX之後的所有東西都是我需要的圖片字節。 – 2012-08-14 14:26:23

回答

1

您需要在字節數組中找到<ETX>的位置。然後,您可以使用它作爲偏移量BitmapFactory.decodeByteArray

我無法測試此代碼,但您應該明白。

final byte[] etxBytes = {'<','E','T','X','>'}; 
    int i =0 ; 
    boolean found = false; 
    for (i = 0; !found && (i < (incomingBytes.length-etxBytes.length)); i++){ 
     found = true; 
     for (int j=i; (j-i) < etxBytes.length && found; j++){ 
      if (etxBytes[j-i]!=incomingBytes[j]){ 
       found = false; 
       break; 
      } 
     } 
    } 
    if (found){ 
     int offset = i + etxBytes.length; 
     Bitmap image = BitmapFactory.decodeByteArray(incomingBytes, offset, incomingBytes.length-offset); 
    } 
0

編碼用底座64的編碼按本answer,然後將它們解碼回圖像的字節的字符串。

相關問題