在我的程序中,我收到一个bytearray。第一部分实际上是一个字符串,第二部分是转换为字节数组的图片 像这样:
<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 :(得分: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);
}
答案 1 :(得分:0)
根据此answer使用base 64编码将字节编码为字符串,然后将它们解码回图像。