2013-10-15 18 views
15

Sayı dizisini bir tam sayıya nasıl dönüştürebilirim? İstediğim "365" Ben, STRING> liste ardından karşı-> tamsayı denedi neler 365.Dizgeyi Düzendeki Tamsayıya Dönüştürme

dönüştürülmesini, ama bu o tamsayı nasıl alabilirim, bu tamsayı ASCII değerini verir?

Lütfen

Yardım edin.

+2

'(STRING> numarası "365")' –

+0

sayesinde @larsmans :) –

+0

Olası yinelenen [ burada] (http://stackoverflow.com/questions/8956789/read-number-in-or-something-can-turn-string-eg-1-to-integer-1-in-racket/8956947#8956947) – Inaimathi

cevap

19

Dene: string->number

> (string->number "1234") 
1234 
+0

ahha, bunu denemedim. Her neyse, uzun bir yoldan gidiyordum Teşekkürler –

+0

İlgili: http://stackoverflow.com/questions/23027030/how-can-i-convert-a-string-into-exact-number-in-scheme-lisp –

1

alternatif bir çözüm dizeleri gelen tamsayılar ayrıştırmak için:

#lang typed/racket 

(: numerical-char->integer (-> Char 
           Integer)) 
(define (numerical-char->integer char) 
    (let ([num (- (char->integer char) 48)]) ; 48 = (char->integer #\0) 
    (if 
    (or (< num 0) (> num 9)) 
    (raise 'non-numerical-char #t) 
    num))) 

(: string->integer (-> String 
         Integer)) 
(define (string->integer str) 
    (let ([char-list (string->list str)]) 
    (if (null? char-list) 
     (raise 'empty-string #t) 
     (foldl 
     (λ([x : Integer] [y : Integer]) 
      (+ (* y 10) x)) 
     0 
     (map numerical-char->integer char-list)))))