मुझे यहां एक छोटा सा हैकेल फ़ंक्शन मिला है जिसे "एबीसीडीईएफ" को 0x41,0x42,0x43,0x44,0x45,0x46 (उनके एसीआईआई मान) में परिवर्तित करना है, फिर उन्हें गुणा करें ताकि यह 0x4142,4344,4546 हो जाए लेकिन यह लगता है कि पूर्णांक लंबाई सीमित है - मैंने सोचा था कि हैकेल मनमाने ढंग से bignums इस्तेमाल किया?हास्केल फ़ंक्शन पूर्णांक लंबाई सीमित कर रहा है - मैंने सोचा कि यह 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 –
प्रकार आपके मित्र हैं। प्रकार हस्ताक्षर जोड़ें, और यह स्पष्ट है कि क्या हो रहा है! –