diff --git a/basis/alien/endian/endian.factor b/basis/alien/endian/endian.factor index bc2919bb6e..b905e4b66b 100644 --- a/basis/alien/endian/endian.factor +++ b/basis/alien/endian/endian.factor @@ -18,13 +18,21 @@ ERROR: invalid-signed-conversion n ; [ invalid-signed-conversion ] } case ; inline + + MACRO: byte-reverse ( n signed? -- quot ) [ drop [ dup iota [ [ 1 + - -8 * ] [ nip 8 * ] 2bi - '[ _ shift HEX: ff bitand _ shift ] + [ + ] [ nip byte-mask ] 2bi + '[ _ shift _ bitand ] ] with map ] [ 1 - [ bitor ] n*quot ] bi ] [