Haskell: 十六进制转二进制的库函数
Haskell: Library function to convert hexadecimal to binary notation
是否有将十六进制数字 (0-F) 转换为其等效的四位二进制值的库函数?例如,9 = 1001,C = 1100。
我查看了 Data.Hex、Data.HexString、Numeric 和其他几个应该相关的库,并且我假设我能够找到我正在寻找的函数.但是,我是 Haskell 的新手,可能会忽略一些简单的事情。
编辑:不是重复的,IMO。我的问题是关于直接从十六进制到二进制的转换,链接的问题(及其答案)没有提到。
不确定你是否可以使用这个:How to print integer literals in binary or hex in haskell?
Haskell: recursively convert hex string to integer?
我认为没有库函数,但您可以使用类似的模型将其转换为基数 2。
没有一个库函数可以将十六进制数字转换为二进制字符串。您可以使用模块 Numeric
中的 readHex
将十六进制数字转换为整数,并使用 Text.Printf
模块中的 printf
生成二进制字符串,如下所示:
import Numeric (readHex)
import Text.Printf (printf)
hexToBin :: Char -> Maybe String
hexToBin c
= case readHex [c] of
(x,_):_ -> Just $ printf "%04b" (x::Int)
_ -> Nothing
给予:
> map hexToBin (['0'..'9'] ++ ['A'..'G'])
[Just "0000",Just "0001",Just "0010",Just "0011",Just "0100",
Just "0101",Just "0110",Just "0111",Just "1000",Just "1001",
Just "1010",Just "1011",Just "1100",Just "1101",Just "1110",
Just "1111",Nothing]
是否有将十六进制数字 (0-F) 转换为其等效的四位二进制值的库函数?例如,9 = 1001,C = 1100。
我查看了 Data.Hex、Data.HexString、Numeric 和其他几个应该相关的库,并且我假设我能够找到我正在寻找的函数.但是,我是 Haskell 的新手,可能会忽略一些简单的事情。
编辑:不是重复的,IMO。我的问题是关于直接从十六进制到二进制的转换,链接的问题(及其答案)没有提到。
不确定你是否可以使用这个:How to print integer literals in binary or hex in haskell?
Haskell: recursively convert hex string to integer?
我认为没有库函数,但您可以使用类似的模型将其转换为基数 2。
没有一个库函数可以将十六进制数字转换为二进制字符串。您可以使用模块 Numeric
中的 readHex
将十六进制数字转换为整数,并使用 Text.Printf
模块中的 printf
生成二进制字符串,如下所示:
import Numeric (readHex)
import Text.Printf (printf)
hexToBin :: Char -> Maybe String
hexToBin c
= case readHex [c] of
(x,_):_ -> Just $ printf "%04b" (x::Int)
_ -> Nothing
给予:
> map hexToBin (['0'..'9'] ++ ['A'..'G'])
[Just "0000",Just "0001",Just "0010",Just "0011",Just "0100",
Just "0101",Just "0110",Just "0111",Just "1000",Just "1001",
Just "1010",Just "1011",Just "1100",Just "1101",Just "1110",
Just "1111",Nothing]