我不知道“ xa”如何转换为10帕斯卡。我只用:
Val('xa',value,return);
值= 10,返回=0。我只是一个新手,有人可以解释吗?我知道这不会像只是一个字符的ASCII原因。
我正在使用Free Pascal:)
我在使用xa
,0xa
和$xa
时在Free Pascal中进行了测试。因此,我认为它无需调用即可理解诸如“ $”,“ 0”之类的特殊字符。是吗?
答案 0 :(得分:3)
自早期的Delphi以来,核心整数转换例程不仅执行数字序列,而且还执行一些特殊操作,例如Pascal“ $ 924”(十六进制)或C样式0x02)。
FreePascal在后来开始添加Delphi兼容性时(大约在1997-2003年)采用了它。除了这种区别之外,另一个不同之处是最后一个参数(在您的示例中为RETURN)从WORD(在Turbo Pascal中为WORD)更改为Delphi中的integer / longint。
IOW,例程接受x并认为您要转换C样式的十六进制数字,然后根据Stuart的表解释“ a”。
它还将%解释为二进制,&解释为八进制。
尝试
val('$10',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 Pascals。%和&是FPC专用的,以匹配文字符号扩展名(类似于$,但适用于二进制和八进制)
var x : Integer
begin
x:=%101010; //42
x:=&101; //65
答案 1 :(得分:1)
这不适用于所有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