MiniJavaCompiler/src/ByteUtil.hs
2024-05-04 15:41:05 +02:00

19 lines
724 B
Haskell

module ByteUtil(unpackWord16, unpackWord32) where
import Data.Word
import Data.Int
import Data.Bits
unpackWord16 :: Word16 -> [Word8]
unpackWord16 v = [
fromIntegral (shiftR ((.&.) v (fromIntegral 0xFF00)) 8),
fromIntegral (shiftR ((.&.) v (fromIntegral 0x00FF)) 0)
]
unpackWord32 :: Word32 -> [Word8]
unpackWord32 v = [
fromIntegral (shiftR ((.&.) v (fromIntegral 0xFF000000)) 24),
fromIntegral (shiftR ((.&.) v (fromIntegral 0x00FF0000)) 16),
fromIntegral (shiftR ((.&.) v (fromIntegral 0x0000FF00)) 8),
fromIntegral (shiftR ((.&.) v (fromIntegral 0x000000FF)) 0)
]