如下代码,我输出后,发现 Edit2的值是3,而Edit3的值是25,请问有谁知道??谢谢了(注)year:2010 mo:09
....
Edit2.Text := inttostr(BcdToInteger(StrToBcd(copy(inttostr(Year),3,2)),true) xor BcdToInteger(StrToBcd(mo),true));Edit3.Text := inttostr(strtoint('$10') xor strtoint('$09'));...

解决方案 »

  1.   

    BcdToInteger(StrToBcd('10'),True) 得到的是$0A
    是你想当然了
      

  2.   

    BCD是十进制数的二进制编码,用4位二进制表示一位十制数,一个字节表示的十进制是00——99。其中两个表达式简化后就是:
    Edit2.Text := IntToStr((10 xor 9)) 
    //Xor运算 1010
    //   1001
    // =   0011 (十进制3)
    Edit3.Text := IntToStr((16 xor 9))
    // 10000
    //      01001
    //   =  11001 (十进制 25)
      

  3.   

    有什么不同?是你自己错了,用 10 xor 9 怎么会等于 16 xor 9 ???,'10'怎么会等于'$10'???