我要要一个十六进制数:1180h 取低两位,我想先转成str,弄完再转回去

解决方案 »

  1.   

    我作一个串口通项目求要把一个数变成16进制再求这个16进制数的后两位,比如说10E3h 这个数的前两位是E3 如何求?
      

  2.   

    var
       wd:Word;
       b:Byte;
       p:Pointer;
    begin
       wd:=$10E3;
       p:=@wd;
       inc(LongInt(p));
       CopyMemory(@b,p,1);
       ShowMessage(IntToHex(b,2)+'h');
    end;
      

  3.   

    这里应当说是相对应的十六进制的前两位或后两位,而不能直接说是前两位或后两位,否则会把这个两位理解为2bits^_^
      

  4.   

    var
       wd:Word;
       b:Byte;
    begin
       wd:=$10E3;
       b:=wd AND $FF;
       ShowMessage(IntToHex(b,2)+'h');
    end;
      

  5.   

    unsigned(僵哥(当程序语言成为普及的第三语言之后……))
    说得也有道理,位的概念一定要弄清楚
    如果真是取后两位,则应该是
    b:=wd AND 2;
    因为通常说的位,移位,都是指bit如果说是取1180h后两Byte,实际上它就只有2Byte,如果按照1180 ,取后头这两个,则看firstrose
      

  6.   

    unsigned(僵哥(当程序语言成为普及的第三语言之后……))
    说得也有道理,位的概念一定要弄清楚
    如果真是取后两位,则应该是
    b:=wd AND 2;
    因为通常说的位,移位,都是指bit如果说是取1180h后两Byte,实际上它就只有2Byte,如果按照1180 ,取后头这两个,则看firstrose
    ======================
    嘻嘻,应该是
    b:=wd And 3;
    ^_^
      

  7.   

    //很简单。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      wd:Word;
    begin
      wd:=$10E3;
      wd:=lo(wd);//就是这么简单。
      ShowMessage(IntToHex(wd,2)+'h');
    end;
      

  8.   

    取低两位用函数lo(),取高两位用函数hi()
      

  9.   

    lili1(离奇) 
    简单,明了!
    同意!
      

  10.   

    Lo($1180) 低两位数
    Hi($1180) 高两位数
      

  11.   

    unsigned(僵哥)
    对头对头,and 3,:))
      

  12.   

    Lo() 实际上就是 and $FF 
    还是位的概念,比如我们常说32位处理器,是指有32个bit,而不是32个$F,
    64位,同样的道理。