我有一个二进制字符串,我想分开。字符串长度可变,需要分成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}
答案 0 :(得分: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也是一个非常好的解决方案。