将字符串更改为整数 - 帕斯卡
Change a string to an integer - pascal
我不知道 "xa" 如何将 in 转换为 10 in pascal。我只是使用:
Val('xa',value,return);
并且value = 10,return = 0。我只是个新手,有人可以解释一下吗?我知道这不会喜欢 ASCII 因为它只是一个字符。
我正在使用 Free Pascal :)
我在 Free Pascal 中测试过,当使用 xa
、0xa
和 $xa
时。所以,我认为它在不调用它的情况下理解像“$”、“0”这样的特殊字符。是吗?
这不适用于所有 Pascal 编译器,并且您没有说明您使用的是什么 Pascal 编译器,但看起来 'xa' 中的 x 表示这是一个十六进制(以 16 为底) ) 数,十六进制数中位数的取值如下:
Digit Value
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a 10
A 10
b 11
B 11
c 12
C 12
d 13
D 13
e 14
E 14
f 15
F 15
自早期 Delphi 以来,核心整数转换例程不仅执行数字序列,还执行一些特殊操作,例如用于十六进制的 Pascal "$924" 或 C 样式 0x02)。
FreePascal 在后来开始添加 Delphi 兼容性时采用了它(大约在 1997-2003 年)。除了这个区别之外,另一个不同是最后一个参数(RETURN 在您的示例中)从 WORD(在 Turbo Pascal 中)更改为 integer/longint 在 Delphi.
IOW,例程接受 x 并认为您的意思是转换 C 样式的十六进制数,然后根据 Stuart 的 table.
解释 "a"
它还将 % 解释为二进制,将 & 解释为八进制。
尝试
val('',value,return);
writeln(value,' ' ,return); // 16 0
val('&10',value,return);
writeln(value,' ' ,return); // 8 0
val('%10',value,return);
writeln(value,' ' ,return); // 2 0
并比较结果。
请注意,这可能不适用于非常古老的 Pascal,例如 Turbo Pascal,以及 2000 年之前的 Free Pascal。% 和 & 是 FPC 特定的,以匹配文字符号扩展(类似于 $,但对于二进制和八进制)
var x : Integer
begin
x:=%101010; //42
x:=&101; //65
我不知道 "xa" 如何将 in 转换为 10 in pascal。我只是使用:
Val('xa',value,return);
并且value = 10,return = 0。我只是个新手,有人可以解释一下吗?我知道这不会喜欢 ASCII 因为它只是一个字符。
我正在使用 Free Pascal :)
我在 Free Pascal 中测试过,当使用 xa
、0xa
和 $xa
时。所以,我认为它在不调用它的情况下理解像“$”、“0”这样的特殊字符。是吗?
这不适用于所有 Pascal 编译器,并且您没有说明您使用的是什么 Pascal 编译器,但看起来 'xa' 中的 x 表示这是一个十六进制(以 16 为底) ) 数,十六进制数中位数的取值如下:
Digit Value 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 a 10 A 10 b 11 B 11 c 12 C 12 d 13 D 13 e 14 E 14 f 15 F 15
自早期 Delphi 以来,核心整数转换例程不仅执行数字序列,还执行一些特殊操作,例如用于十六进制的 Pascal "$924" 或 C 样式 0x02)。
FreePascal 在后来开始添加 Delphi 兼容性时采用了它(大约在 1997-2003 年)。除了这个区别之外,另一个不同是最后一个参数(RETURN 在您的示例中)从 WORD(在 Turbo Pascal 中)更改为 integer/longint 在 Delphi.
IOW,例程接受 x 并认为您的意思是转换 C 样式的十六进制数,然后根据 Stuart 的 table.
解释 "a"它还将 % 解释为二进制,将 & 解释为八进制。
尝试
val('',value,return);
writeln(value,' ' ,return); // 16 0
val('&10',value,return);
writeln(value,' ' ,return); // 8 0
val('%10',value,return);
writeln(value,' ' ,return); // 2 0
并比较结果。
请注意,这可能不适用于非常古老的 Pascal,例如 Turbo Pascal,以及 2000 年之前的 Free Pascal。% 和 & 是 FPC 特定的,以匹配文字符号扩展(类似于 $,但对于二进制和八进制)
var x : Integer
begin
x:=%101010; //42
x:=&101; //65