Tôi có một mảng byte thô mà tôi cần phải mã hóa thành danh sách mảng byte trong java. Giải thích tốt hơn bằng cách khai báo phương pháp sau đây.Tokenize mảng byte
public static List<byte[]> splitMessage(byte[] rawByte, String tokenDelimiter)
Ví dụ chạy.
Ví dụ Run 1:
liệu byte
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
là |,|
(nghĩa là 124,44,124
)
Vì vậy, danh sách trở lại là như sau:
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
Ví dụ 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
là |,|
(nghĩa là 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>
tôi có thể đạt được ví dụ chạy từ đoạn mã sau. Nhưng bị mắc kẹt với thẻ trong thẻ thứ hai.
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;
}
Có ai phải đối mặt với vấn đề tương tự như mã hóa mảng không? Vui lòng đề xuất nếu có một số cách khác để mã hóa các mảng.
Xin lưu ý: Tôi không muốn chuyển đổi luồng byte thành String
, mã hóa ở định dạng Chuỗi và chuyển đổi lại thành byte. Nó có thể có vấn đề về mã hóa.
lý do bạn không chỉ bỏ qua các mã thông báo trống trong mã của mình? – mishadoff