@
Flymachine 补为 448 确实如此,开头补 1 有待考证
x[len >> 5] |= 0x80 << len % 32
//len 单位为 8*byte x 单位为 byte/4
//不足 32 位的数据前面加上 128,正好 32 位的数据在后面一组加上 128
//2^5 = 32 0x80=2^7=128
输入 0 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 0=128
输入 1 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 8+0x31=0x8000+0x31=32768+49=32817
输入 2 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 16+0x3131=0x800000+0x3131=8388608+12593=8401201
输入 3 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 24+0x313131=0x80000000+0x313131=-2147483648+3223857=-2144259791
输入 4 个 1 输入得到 len>>5=1,x[len >> 5]=128 << 0=128
x[(((len + 64) >>> 9) << 4) + 14] = len
//输入 1 个 1 得到(8+64) >>> 9 = 0 << 4+14 = 14
//document.write(x[13] + ',')
//undefined,
//document.write(x[14] + ',')
//8,
//document.write(x[15] + ',')
//undefined,
//输入 56 个 1 得到(56*8+64 = 448+64 = 512) >>> 9 = 1 << 4+14 = 30
//除以 512,剩余的数值不足 448 的补充为 448,正好 448 的直接补充 512,超过 448 不足 512 的补充为 512,再补充 448
//2^4*32=512 14*32=448 2^9=512
//document.write(x[29] + ',')
//undefined,
//document.write(x[30] + ',')
//448,
//document.write(x[31] + ',')
//undefined,