我有一大堆十六进制字符串(56位或112位),在转换为二进制字符串后,我需要从中提取不同的部分。
我通常如何做到这一点是要对子部分进行子串,或者尝试使用位移,但是我没有使用~20行Integer.parseInt(binary.substring(...)),我想申请某种模式。
除了我的下面的任何想法,这是一种愚蠢和缓慢的想法;如何提取二进制字符串的a-b,c-d,x-y部分?我想有人需要应用位移,但这也需要多行。我很好用几行,但我真的不喜欢~20个子串调用。
这是我尝试这样的事情。
String p = "(?<df>\\d{5})(?<ca>\\d{3})(?<aa>\\d{24})(?<pl>\\d{0,56})(?<pi>(\\d{24}))";
String packet = "1000110101010000001011001010010110011001000100010110111100100000010010000000010010001000001010111001101101101010";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(packet);
while (matcher.find())
System.out.printf("df=%s, ca=%s, aa=%s, pl=%s, pi=%s\n", matcher.group("df"),
matcher.group("ca"), matcher.group("aa"), matcher.group("pl"), matcher.group("pi"));
输出:
df=10001, ca=101, aa=010100000010110010100101, pl=10011001000100010110111100100000010010000000010010001000, pi=001010111001101101101010
df=10001, ca=101, aa=010100000010110010100101, pl=10011001000100010110111100100000010010000000010010001000, pi=001010111001101101101010
df=10001, ca=101, aa=010100000010110010100101, pl=10011001000100010110111100100000010010000000010010001000, pi=001010111001101101101010
非常感谢任何想法