两个a,b:byte;我要将a和b连接后再转化为整型(有负号的),怎么写代码呢?谢谢!
我是这个写的,可是测试不对呀
a,b:byte;begin
a:= $00;
b:=100;
A1:= strtoint(inttohex(a,2)+inttohex(b,2));
end;如果a:= $00;b:=$10;A1可以得到正数,可是a:= $FF;b:=$FF;A1按理应得到负数的,可是运行时报错说:00FF出错!

解决方案 »

  1.   

    呵呵~~~楼主没把问题搞清楚。当a=$00 (0), b=$10(16) (括号内是10进制值),inttohex(a,2) = ‘0’
    inttohex(b,2) = ‘10’
    ------------>
    替换为: A1 := StrToInt('0' + '10') 
    最后结果:A1 = 10
    ------------
    虽然这个结果是你期望的正数,但却是一个错误的结果。
    接下来看当a=$ff, b=$ff的情况。
    $ff = 255(十进制)inttohex(a,2) = 'FF';
    inttohex(b,2) = 'FF';替换为: A1 := StrToInt('FF' + 'FF')

    A1 := StrToInt('FFFF')
    -----------
    由此看,FFFF不是一个有效的整型,所以在使用StrToInt时出发类型转换异常。
    -----正确的写法应该是这样:StrToInt('$' + inttohex(a,2)+inttohex(b,2)); 
    前面加'$',告诉StrToInt,这是一个16进制串。
      

  2.   

    SmallInt((a shl 8)or b)