defrev8(b: int) -> int: """按位反转一个字节""" r = 0 for i inrange(8): r = (r << 1) | ((b >> i) & 1) return r
# Step 1: 0/1 → bytes data = bytes(int(content[i:i+8], 2) for i inrange(0, len(content), 8))
# Step 2: 去掉头尾 20 字节 0x04 填充,按块 (b0 50 de ... be) 切分 core = data[20:-20] blocks = [] i = 0 while i < len(core): if core[i:i+3] != b'\xb0\x50\xde': i += 1 continue j = core.find(b'\xbe', i + 3) if j == -1: blocks.append(core[i:]) break blocks.append(core[i:j+1]) i = j + 1
# Step 3: 位反转 → ASCII 文本 {x,y,z} text = ''.join(''.join(chr(rev8(b)) for b in blk) for blk in blocks) text = text.replace('\r\n', '\n').strip() pts = [(int(x), int(y), int(z)) for x, y, z in re.findall(r'\{(-?\d+),(-?\d+),(-?\d+)\}', text)] print(f"points: {len(pts)}")