0

我有一个要拆分的二进制字符串。字符串是可变长度的,需要分成3段;标签、索引和块偏移量。我有索引的长度和块偏移量,但没有标签,我试图将标签与字符串的其余部分分开。当索引的长度和块偏移量已知时,有没有办法做到这一点?(我想将它们向后拆分,因为标签的长度可变,但索引和块偏移量是恒定的)


示例(为简单起见以十六进制编写):

String[1]: 400341a0
String[2]: df7c48
index length: 2 hex
block offset length: 3 hex    
Output[0]: {400, 34, 1a0}
Output[1]: {d, f7, c48}
4

1 回答 1

2

不确定+-1,但我认为这很好。

int length = s.length;
int blockOffsetIndex = length - BLOCK_OFFSET_LENGTH;
blockOffset = s.substring(blockOffsetIndex  - 1, length );

int indexIndex = blockOffsetIndex - INDEX_LENGTH;
indexStr = s.substring(indexIndex - 1, indexIndex + INDEX_LENGHT);

rest = s.substring(0, indexIndex -1);

正如@sdk 建议的那样,Apache StringUtils也是一个非常好的解决方案。

于 2013-02-18T15:12:27.703 回答