2012-08-14 106 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,然后将它们解码回图像的字节的字符串。

相关问题