여기에 "ABCDEF"를 0x41,0x42,0x43,0x44,0x45,0x46 (ASCII 값)으로 변환하고 0x4142,4344,4546이되도록 곱하면되는 짧은 haskell 함수가 있습니다.하지만 정수 길이를 제한하는 것 같다 - 나는 haskell이 임의의 bignum을 사용했다고 생각 하나?하스켈 함수가 정수 길이를 제한하는 것으로 보인다 - 나는 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
또한보십시오 http://stackoverflow.com/questions/3429291/haskell-int-and-integer –
유형은 당신의 친구입니다. 유형 서명을 추가하면 진행중인 작업이 명확합니다! –