byte :: (Integral a, B.Bits a) => Int -> Lens' a Word8
byte n = lens get upd
  where
  sh      = n * 8

  get a   = fromIntegral (a `B.shiftR` sh)

  upd a b = a B..|. (fromIntegral b `B.shiftL` sh)
byte :: (Integral a, B.Bits a) => Int -> Lens' a Word8
byte n = lens get upd
  where
  sh      = n * 8

  get a   = fromIntegral (a `B.shiftR` sh)

  upd a b = a B..|. (fromIntegral b `B.shiftL` sh)
byte n = lens get upd
  where
  sh      = n * 8

  get a   = fromIntegral (a `B.shiftR` sh)

  upd a b = a B..|. (fromIntegral b `B.shiftL` sh)