| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! Copyright (C) 2003, 2007 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: kernel math sequences ;
 | 
					
						
							|  |  |  | IN: io.binary | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-08 03:51:26 -05:00
										 |  |  | : le> ( seq -- x ) B{ } like byte-array>bignum >integer ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | : be> ( seq -- x ) <reversed> le> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : mask-byte ( x -- y ) HEX: ff bitand ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : nth-byte ( x n -- b ) -8 * shift mask-byte ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-30 02:31:05 -04:00
										 |  |  | : >le ( x n -- byte-array ) [ nth-byte ] with B{ } map-as ;
 | 
					
						
							|  |  |  | : >be ( x n -- byte-array ) >le dup reverse-here ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : d>w/w ( d -- w1 w2 )
 | 
					
						
							| 
									
										
										
										
											2009-02-02 00:47:36 -05:00
										 |  |  |     [ HEX: ffffffff bitand ] | 
					
						
							|  |  |  |     [ -32 shift HEX: ffffffff bitand ] bi ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : w>h/h ( w -- h1 h2 )
 | 
					
						
							| 
									
										
										
										
											2009-02-02 00:47:36 -05:00
										 |  |  |     [ HEX: ffff bitand ] | 
					
						
							|  |  |  |     [ -16 shift HEX: ffff bitand ] bi ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : h>b/b ( h -- b1 b2 )
 | 
					
						
							| 
									
										
										
										
											2009-02-02 00:47:36 -05:00
										 |  |  |     [ mask-byte ] | 
					
						
							|  |  |  |     [ -8 shift mask-byte ] bi ;
 |