cyclic redundancy check 32 logic
bitwise remainder operationを経由して計算されたvaluesからencoder[default, stream]を使用可能。encoder
1. declare valuesconst vs=map(false,new Uint32Array(256),(_,i)=>reduce(false,8,a=>1&a?poly^a>>>1:a>>>1,i))2. declare this.encode
this.encode=v=>~reduce(false,v,(a,v)=>a>>>8^vs[0xff&(a^v)],0xffffffff)>>>0stream
part
1. declare valuesconst vs=map(false,new Uint32Array(256),(_,i)=>reduce(false,8,a=>1&a?poly^a>>>1:a>>>1,i))2. declare this.encode
this.encode=v=>reduce(false,v,(a,v)=>a>>>8^vs[0xff&(a^v)],0)>>>0stream encoder
3. declare callconst c=(v,vs)=>reduce(false,32,(a,_,i)=>1&v>>>i?a^vs[i]:a,0)>>>04. declare values
,vs=reduce(false,18,(a,_,i)=>{
if(2<i)a[i-2]=map(false,a[i-3],(v,_,vs)=>c(v,vs))
else a[0]=map(false,a[0],(v,_,vs)=>c(v,vs))
return a
},[map(false,new Uint32Array(32),(v,i)=>0===i?poly:1<<i-1)])5. declare this.encode
this.encode=v=>~reduce(false,v,(a,v)=>(32768===v[1]?c(a,vs[15]):reduce(false,15,(a,_,i)=>1&v[1]>>>i?c(a,vs[i]):a,a))^v[0]>>>0,0xffffffff)>>>0