如何从 STDIN 读取 1 个字节?
How do I read 1 byte from STDIN?
如何从 STDIN 读取一个字节?
我试过了searching for IO Word8
on Hoogle但是没有任何用处。
我能找到的最接近的是 System.IO.getChar
,但它显示的是 Char
而不是 Word8
。
我认为最简单的选择是像这样使用 Data.ByteString 中的 hGet
:
import qualified Data.ByteString as B
import System.IO (stdin)
import Data.Word (Word8)
getByte :: IO Word8
getByte = B.head <$> B.hGet stdin 1
您也可以像这样使用 hSetBinaryMode
:
import System.IO
import Data.Word (Word8)
getByte :: IO Word8
getByte = do
hSetBinaryMode stdin True
c <- getChar
hSetBinaryMode stdin False
pure $! fromIntegral (fromEnum c)
如何从 STDIN 读取一个字节?
我试过了searching for IO Word8
on Hoogle但是没有任何用处。
我能找到的最接近的是 System.IO.getChar
,但它显示的是 Char
而不是 Word8
。
我认为最简单的选择是像这样使用 Data.ByteString 中的 hGet
:
import qualified Data.ByteString as B
import System.IO (stdin)
import Data.Word (Word8)
getByte :: IO Word8
getByte = B.head <$> B.hGet stdin 1
您也可以像这样使用 hSetBinaryMode
:
import System.IO
import Data.Word (Word8)
getByte :: IO Word8
getByte = do
hSetBinaryMode stdin True
c <- getChar
hSetBinaryMode stdin False
pure $! fromIntegral (fromEnum c)