Tengo una matriz de bytes sin formato que necesito convertir a una lista de array de bytes en java. Explicado mejor por la siguiente declaración de método.Tokenize byte array
public static List<byte[]> splitMessage(byte[] rawByte, String tokenDelimiter)
Ejecución de ejemplo.
Ejemplo de ejecución 1:
bytes Raw
byte[] rawBytes = new byte[]{72,118,121,49,85,118,97,113,111,124,44,124,49,48,43,57,48,36,63,49,66,70,22,18,124,44,124,23,27,25,54,24,24,34,44,57,69,66,49,47,66,16,39,35,32,36,30,50,63,124,44,124,16,18,24,64,4,94,124,44,124,19,31,42,55,66,46,34,62,34,37};
tokenDelimiter
es |,|
(es decir 124,44,124
)
Así volvieron La lista es la:
Token 1: 72,118,121,49,85,118,97,113,111
Token 2: 49,48,43,57,48,36,63,49,66,70,22,18
Token 3: 23,27,25,54,24,24,34,44,57,69,66,49,47,66,16,39,35,32,36,30,50,63,
Token 4: 16,18,24,64,4,94
Token 5: 19,31,42,55,66,46,34,62,34,37
Ejemplo Run 2:
byte[] rawBytes = new byte[]{72,118,121,49,85,118,97,113,111,124,44,124,49,48,43,57,48,36,63,49,66,70,22,18,124,44,124,124,44,124,23,27,25,54,24,24,34,44,57,69,66,49,47,66,16,39,35,32,36,30,50,63,124,44,124,16,18,24,64,4,94,124,44,124,19,31,42,55,66,46,34,62,34,37,124,44,124,124,44,124};
tokenDelimiter
es |,|
(es decir 124,44,124
)
Token 1: 72,118,121,49,85,118,97,113,111
Token 2: 49,48,43,57,48,36,63,49,66,70,22,18
Token 3: <Empty>
Token 3: 23,27,25,54,24,24,34,44,57,69,66,49,47,66,16,39,35,32,36,30,50,63,
Token 4: 16,18,24,64,4,94
Token 5: 19,31,42,55,66,46,34,62,34,37
Token 6: <Empty>
Token 7: <Empty>
soy capaz de achive ejemplo correr de fragmento de código siguiente. Pero atascado con etiquetas en el segundo.
public static List<byte[]> splitMessageSept19(byte[] rawByte, String tokenDelimiter) throws UnsupportedEncodingException
{
List<byte[]> tokens = new ArrayList<byte[]>();
final byte[] byteArray = tokenDelimiter.getBytes("UTF-8");
final byte byteDelimitorFirstByte = byteArray[0];
int bytenum =0 ;
int lastIndex = 0;
int storIterator =0;
for (int iterator = 0 ; iterator <= rawByte.length ; iterator++)
{
if (iterator == rawByte.length || rawByte[iterator] == byteDelimitorFirstByte)
{
storIterator = iterator;
if (iterator != rawByte.length)
{
for (int i=0 ; i < byteArray.length ; i++)
{
if (rawByte[iterator] == byteArray[i])
{
iterator++ ;
continue;
}
else
{
break;
}
}
}
byte[] byteArrayExtracted = new byte[storIterator - lastIndex];
System.arraycopy(rawByte, lastIndex, byteArrayExtracted, 0,
storIterator - lastIndex);
lastIndex = iterator ;
tokens.add(byteArrayExtracted);
byteArrayExtracted = null;
}
}
for (byte[] bytetoken : tokens)
{
System.out.println("Token received is: " + new String(bytetoken, "UTF-8"));
}
return tokens;
}
¿Alguien ha enfrentado un problema similar al tokenizar matrices? Por favor, sugiera si hay alguna otra manera de tokenizar matrices.
Tenga en cuenta: no quiero convertir la secuencia de bytes a String
, tokenizar en formato de cadena y convertir de nuevo a bytes. Puede tener problemas de codificación.
¿por qué no te saltas tokens vacías en tu código? – mishadoff