io.binary: faster >be.
							parent
							
								
									684c2793e7
								
							
						
					
					
						commit
						a2c241baea
					
				| 
						 | 
				
			
			@ -4,26 +4,32 @@ USING: kernel math sequences ;
 | 
			
		|||
IN: io.binary
 | 
			
		||||
 | 
			
		||||
: le> ( seq -- x ) dup length iota 0 [ 8 * shift + ] 2reduce ;
 | 
			
		||||
 | 
			
		||||
: be> ( seq -- x ) 0 [ [ 8 shift ] dip + ] reduce ;
 | 
			
		||||
 | 
			
		||||
: mask-byte ( x -- y ) 0xff bitand ; inline
 | 
			
		||||
 | 
			
		||||
: nth-byte ( x n -- b ) -8 * shift mask-byte ; inline
 | 
			
		||||
 | 
			
		||||
: >le ( x n -- byte-array ) iota [ nth-byte ] with B{ } map-as ;
 | 
			
		||||
: >be ( x n -- byte-array ) >le reverse! ;
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
: map-bytes ( x seq -- byte-array )
 | 
			
		||||
    [ nth-byte ] with B{ } map-as ; inline
 | 
			
		||||
 | 
			
		||||
PRIVATE>
 | 
			
		||||
 | 
			
		||||
: >le ( x n -- byte-array ) iota map-bytes ;
 | 
			
		||||
 | 
			
		||||
: >be ( x n -- byte-array ) iota <reversed> map-bytes ;
 | 
			
		||||
 | 
			
		||||
: d>w/w ( d -- w1 w2 )
 | 
			
		||||
    [ 0xffffffff bitand ]
 | 
			
		||||
    [ -32 shift 0xffffffff bitand ] bi ;
 | 
			
		||||
    [ 0xffffffff bitand ] [ -32 shift 0xffffffff bitand ] bi ;
 | 
			
		||||
 | 
			
		||||
: w>h/h ( w -- h1 h2 )
 | 
			
		||||
    [ 0xffff bitand ]
 | 
			
		||||
    [ -16 shift 0xffff bitand ] bi ;
 | 
			
		||||
    [ 0xffff bitand ] [ -16 shift 0xffff bitand ] bi ;
 | 
			
		||||
 | 
			
		||||
: h>b/b ( h -- b1 b2 )
 | 
			
		||||
    [ mask-byte ]
 | 
			
		||||
    [ -8 shift mask-byte ] bi ;
 | 
			
		||||
    [ mask-byte ] [ -8 shift mask-byte ] bi ;
 | 
			
		||||
 | 
			
		||||
: signed-le> ( bytes -- x )
 | 
			
		||||
    [ le> ] [ length 8 * 1 - 2^ 1 - ] bi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue