33 lines
		
	
	
		
			694 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			694 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha.audio2.ogg.tools; | ||
|  | import haxe.ds.Vector; | ||
|  | 
 | ||
|  | /** | ||
|  |  * ... | ||
|  |  * @author shohei909 | ||
|  |  */ | ||
|  | class Crc32 | ||
|  | { | ||
|  |     static inline var POLY:UInt = 0x04c11db7; | ||
|  |     static var table:Vector<UInt>; | ||
|  | 
 | ||
|  |     public static function init() { | ||
|  |         if (table != null) { | ||
|  |             return; | ||
|  |         } | ||
|  |          | ||
|  |         table = new Vector(256); | ||
|  |         for (i in 0...256) { | ||
|  |             var s:UInt = ((i:UInt) << (24:UInt)); | ||
|  |             for (j in 0...8) { | ||
|  |                 s = (s << 1) ^ (s >= ((1:UInt) << 31) ? POLY : 0); | ||
|  |             } | ||
|  |             table[i] = s; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public static inline function update(crc:UInt, byte:UInt):UInt | ||
|  |     { | ||
|  |         return (crc << 8) ^ table[byte ^ (crc >>> 24)]; | ||
|  |     } | ||
|  | } |