gpt4 book ai didi

Haskell 函数似乎限制整数长度 - 我认为它使用 bignums?

转载 作者:行者123 更新时间:2023-12-02 14:21:35 26 4
gpt4 key购买 nike

我这里有一个简短的haskell函数,应该将“ABCDEF”转换为0x41,0x42,0x43,0x44,0x45,0x46(它们的ascii值),然后将它们相乘,使其变为0x4142,4344,4546,但是它似乎限制了整数长度 - 我认为 haskell 使用任意 bignums?

最后一行代码工作正常,这让我很困惑

有什么想法吗?非常感谢

import Data.Char
import Numeric

strToHex2 (h:[]) = ord h
strToHex2 (h:t) = (ord h) + ((strToHex2 t) * 256)
strToHex s = strToHex2 (reverse s)

main = do
print(strToHex "ABCDEF")
print ((((((((0x41*256+0x42)*256)+0x43)*256)+0x44)*256)+0x45)*256+0x46)

输出为:

1128547654      <- limited to 32 bits for some reason?
71752852194630 <- that's fine

最佳答案

您的问题是 ord 返回一个 Int,它是固定宽度的。您需要toInteger $ ord h

关于Haskell 函数似乎限制整数长度 - 我认为它使用 bignums?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3261562/

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