Scheme 整数的转换->;烧焦

Scheme 整数的转换->;烧焦,scheme,racket,Scheme,Racket,我正在学习计划,我在一本教科书中偶然发现了这一点: (整数->字符50)⇒ #\二, 为什么整数->字符50的值为2?是不是因为“50”太大而不能作为字符,所以它只需要长度/位数?它的计算结果不是2:它的计算结果是字符\2,这是完全不同的事情: > (for ([i (in-range 32 128)]) (let ([c (integer->char i)]) (printf "~S: ~S / '~A'~%" i c c))) 32: #\

我正在学习计划,我在一本教科书中偶然发现了这一点:

(整数->字符50)⇒ #\二,


为什么整数->字符50的值为2?是不是因为“50”太大而不能作为字符,所以它只需要长度/位数?

它的计算结果不是
2
:它的计算结果是字符
\2
,这是完全不同的事情:

> (for ([i (in-range 32 128)])
    (let ([c (integer->char i)])
      (printf "~S: ~S / '~A'~%" i c c)))
32: #\space / ' '
33: #\! / '!'
34: #\" / '"'
35: #\# / '#'
36: #\$ / '$'
37: #\% / '%'
38: #\& / '&'
39: #\' / '''
40: #\( / '('
41: #\) / ')'
42: #\* / '*'
43: #\+ / '+'
44: #\, / ','
45: #\- / '-'
46: #\. / '.'
47: #\/ / '/'
48: #\0 / '0'
49: #\1 / '1'
50: #\2 / '2'
51: #\3 / '3'
52: #\4 / '4'
53: #\5 / '5'
54: #\6 / '6'
55: #\7 / '7'
56: #\8 / '8'
57: #\9 / '9'
58: #\: / ':'
59: #\; / ';'
60: #\< / '<'
61: #\= / '='
62: #\> / '>'
63: #\? / '?'
64: #\@ / '@'
65: #\A / 'A'
66: #\B / 'B'
67: #\C / 'C'
68: #\D / 'D'
69: #\E / 'E'
70: #\F / 'F'
71: #\G / 'G'
72: #\H / 'H'
73: #\I / 'I'
74: #\J / 'J'
75: #\K / 'K'
76: #\L / 'L'
77: #\M / 'M'
78: #\N / 'N'
79: #\O / 'O'
80: #\P / 'P'
81: #\Q / 'Q'
82: #\R / 'R'
83: #\S / 'S'
84: #\T / 'T'
85: #\U / 'U'
86: #\V / 'V'
87: #\W / 'W'
88: #\X / 'X'
89: #\Y / 'Y'
90: #\Z / 'Z'
91: #\[ / '['
92: #\\ / '\'
93: #\] / ']'
94: #\^ / '^'
95: #\_ / '_'
96: #\` / '`'
97: #\a / 'a'
98: #\b / 'b'
99: #\c / 'c'
100: #\d / 'd'
101: #\e / 'e'
102: #\f / 'f'
103: #\g / 'g'
104: #\h / 'h'
105: #\i / 'i'
106: #\j / 'j'
107: #\k / 'k'
108: #\l / 'l'
109: #\m / 'm'
110: #\n / 'n'
111: #\o / 'o'
112: #\p / 'p'
113: #\q / 'q'
114: #\r / 'r'
115: #\s / 's'
116: #\t / 't'
117: #\u / 'u'
118: #\v / 'v'
119: #\w / 'w'
120: #\x / 'x'
121: #\y / 'y'
122: #\z / 'z'
123: #\{ / '{'
124: #\| / '|'
125: #\} / '}'
126: #\~ / '~'
127: #\rubout / ''
>(用于([i(范围32 128)])
(let([c(整数->字符i)])
(printf“~S:~S/'~A'~%ic)))
32:#\space/“”
33: #\! / '!'
34: #\" / '"'
35: #\# / '#'
36: #\$ / '$'
37: #\% / '%'
38: #\& / '&'
39: #\' / '''
40: #\( / '('
41: #\) / ')'
42: #\* / '*'
43: #\+ / '+'
44: #\, / ','
45: #\- / '-'
46: #\. / '.'
47: #\/ / '/'
48: #\0 / '0'
49: #\1 / '1'
50: #\2 / '2'
51: #\3 / '3'
52: #\4 / '4'
53: #\5 / '5'
54: #\6 / '6'
55: #\7 / '7'
56: #\8 / '8'
57: #\9 / '9'
58: #\: / ':'
59: #\; / ';'
60: #\< / ''
63: #\? / '?'
64: #\@ / '@'
65:#\A/“A”
66:#\B/“B”
67:#\C/“C”
68:#\D/'D'
69:#\E/“E”
70:#\F/“F”
71:#\G/“G”
72:#\H/“H”
73:#\I/“我”
74:#\J/“J”
75:#\K/“K”
76:#\L/“L”
77:#\M/‘M’
78:#\N/“N”
79:#\O/“O”
80:#\P/“P”
81:#\Q/‘Q’
82:#\R/“R”
83:#\S/'S'
84:#\T/“T”
85:#\U/“U”
86:#\V/“V”
87:#\W/“W”
88:#\X/‘X’
89:#\Y/“Y”
90:#\Z/'Z'
91: #\[ / '['
92: #\\ / '\'
93: #\] / ']'
94: #\^ / '^'
95: #\_ / '_'
96: #\` / '`'
97:#\a/“a”
98:#\b/“b”
99:#\c/“c”
100:#\d/'d'
101:#\e/“e”
102:#\f/“f”
103:#\g/“g”
104:#\h/“h”
105:#\i/“我”
106:#\j/“j”
107:#\k/“k”
108:#\l/“l”
109:#\m/‘m’
110:#\n/“n”
111:#\o/“o”
112:#\p/“p”
113:#\q/‘q’
114:#\r/“r”
115:#\s/'s'
116:#\t/“t”
117:#\u/“u”
118:#\v/“v”
119:#\w/“w”
120:#\x/‘x’
121:#\y/“y”
122:#\z/'z'
123: #\{ / '{'
124: #\| / '|'
125: #\} / '}'
126: #\~ / '~'
127:#\rubout/“”

重要的是要知道,它不会将数值转换为数字,而是将数字转换为相应的字符。例如,ascii值50表示字符
\2
(数字2),65表示
\A
(大写字母A)

您可以在报告中找到:

过程:
(字符->整数字符)

过程:
(整数->字符n)

给定一个字符,char->integer返回一个精确的整数 字符的表示。给定一个精确的整数,即 char->integer下的字符图像,integer->char返回 性格

Scheme有一个名为的过程,该过程将数字转换为字符串表示形式:

(number->string 50 10)   ; ==> "50" (base 10 representation)
(number->string #x32 10) ; ==> "50" (base 10 representation)
(number->string 50 16)   ; ==> "32" (hex, base 16)
\2
是数字“2”,而不是数字2。您可以通过转换51(即
\3
)和100(即
\d
)来检查关于长度的假设。