gpt4 book ai didi

haskell - 将 chr 的输出格式更改为十六进制

转载 作者:行者123 更新时间:2023-12-02 14:06:56 28 4
gpt4 key购买 nike

假设我有

print [chr 0x49, chr 0x9f]

输出

"I\159"

当打印必须显示为转义序列的字符时,如何使 print 使用十六进制数字?这样我的输出就是:

"I\x9f"

最佳答案

简短的回答是您无法更改它。

print xputStrLn (show x) 相同,并且您无法更改 show 对于已经具有的类型的工作方式定义的 Show 实例。

但是,您可以定义自己的格式化函数:

fmtChar :: Char -> String
fmtChar ch = ...

fmtString :: String -> String
fmtString s = "\"" ++ (concatMap fmtChar s) ++ "\""

并在您想要查看格式的地方使用它们:

putStrLn $ fmtString [ chr 0x49, chr 0x9f ]

定义fmtChar的一种方法:

import Numeric (showHex)

fmtChar ch =
if length s == 1
then s
else "\\x" ++ showHex (fromEnum ch) ""
where s = show ch

(注意:Numeric 位于 base 中,因此您已经拥有它。)

关于haskell - 将 chr 的输出格式更改为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32217973/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com