int readInt16LE(List<int> b, int idx) { var u = b[idx + 1] * (1 << 8) + b[idx]; return (u < 0x8000) ? u : (0xffff - u + 1) * -1; }