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
|
|
|
|
|
|
|
|
: le> ( seq -- x ) B{ } like byte-array>bignum ;
|
|
|
|
: be> ( seq -- x ) <reversed> le> ;
|
|
|
|
|
|
|
|
: mask-byte ( x -- y ) HEX: ff bitand ; inline
|
|
|
|
|
|
|
|
: nth-byte ( x n -- b ) -8 * shift mask-byte ; inline
|
|
|
|
|
2008-01-09 17:36:30 -05:00
|
|
|
: >le ( x n -- str ) [ nth-byte ] with "" map-as ;
|
2007-09-20 18:09:08 -04:00
|
|
|
: >be ( x n -- str ) >le dup reverse-here ;
|
|
|
|
|
|
|
|
: d>w/w ( d -- w1 w2 )
|
|
|
|
dup HEX: ffffffff bitand
|
|
|
|
swap -32 shift HEX: ffffffff bitand ;
|
|
|
|
|
|
|
|
: w>h/h ( w -- h1 h2 )
|
|
|
|
dup HEX: ffff bitand
|
|
|
|
swap -16 shift HEX: ffff bitand ;
|
|
|
|
|
|
|
|
: h>b/b ( h -- b1 b2 )
|
|
|
|
dup mask-byte
|
|
|
|
swap -8 shift mask-byte ;
|