delphi中有没有 c语言中直接截取字节的函数?

解决方案 »

  1.   

    可以转换的,delphi中可以使用汇编语句进行转换
      

  2.   

    移位之后应该还要截取才行啊。
    delphi不能在字节数不同的类型之间进行转化。
    恩,对了,用 无符号指针加移位可以吗?
      

  3.   

    smallint:是16位的,integer是32位的,我写到你信箱吧
      

  4.   

    1、TBitList = type Word;//不能用smallint
        TLongBitList = type LongInt
    2、编写过程,将指定位设置为0
    procedure ClearLBit(var Body: TLongBitList; const I: Byte);
    asm
    and edx, $ff    //
       btr [eax], edx  //清除相应的位
    end;
    3、循环调用clearlbit清除16-31位,剩下的就是0-15位的word

    4、如果你存在负数,处理方法有一些不同,看看你的情况再说
      

  5.   

    谢谢小鱼,
    具体的情况是,我要把一个integer类型的值赋给一个 smallint变量。
    因为我可以确认integer的值的范围在smallint的最大值和最小值的范围以类,因为从integer到smallint不能直接转化,所以我喜欢截取integer的一部分,即0-15位让之转化成smallint
      

  6.   

    var
      S:SmallInt;
      I:Integer;
    begin
      I:=$FFFF;
      S:=SmallInt(I);
      ShowMessage(IntToStr(S));
    end;
    就这样啊!不懂干吗这么复杂?
      

  7.   

    如果你可以确认integer的值的范围在smallint的最大值和最小值的范围以内,就可以直接用BlueTrees(蜗牛) 的方式就行了,若在范围之外就不行了。