您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 写一个关于字节的类(跪求好心人帮忙~~~~~~`````````)

写一个关于字节的类(跪求好心人帮忙~~~~~~`````````)

来源:网络整理     时间:2016/8/31 9:51:29     关键词:

关于网友提出的“ 写一个关于字节的类(跪求好心人帮忙~~~~~~`````````)”问题疑问,本网通过在网上对“ 写一个关于字节的类(跪求好心人帮忙~~~~~~`````````)”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 写一个关于字节的类(跪求好心人帮忙~~~~~~`````````)
描述:

学习delphi的时间不太长,想试试写一个类自己用。
大概要求是这样,给一个字节(8位),用这个类可以任意取出其中一位。
需要用到shr,shl这些东西。最好能尽量按照oo的思想。
我是个新手,从来没写过类,不知道怎么下手。
另外,对于这个类中的封装把握不太准,所以还请各位高手大发慈悲,教一教我,最好有原码,呵呵~~~~
叩谢,扣谢。


解决方案1:

不用这么复杂吧?
var
  bIn, bOut: Byte;
  
  bIn := bIn and (1 shl n); //n表示位置,在0-7之间
  bOut := bIn shr 2;

解决方案2:

type
    T_Bit = class
private
    value:Byte;
public
    constructor create( invalue:Byte);reintroduce;overload;
    destructor destroy();override;
    function GetBit(iPos:integer):string;
end;
constructor T_Bit.create( invalue:Byte );
begin
    inherited Create();
    value:=invalue;
end;
destructor T_Bit.destroy();
begin
    inherited Destroy;
end;
function T_Bit.GetBit(iPos:integer):string;
begin
    if(iPos>=8) or (iPos<0)then
        Result:=''
    else
        Result:=IntToStr((value shr iPos) And 1);
end;
...........
调用
var
    bTemp:T_Bit;
begin
    bTemp:=T_Bit.create(127);
    Label1.Caption:=bTemp.GetBit(2);

解决方案3:

for example
type TByte = class
  public:
    class function GetBit(cData: char; nPos: Integer): Integer; //nPos is from right to left (0-7)
end;
function TByte.GetBit(cData: char; nPos: Integer): Integer;
begin
  if (nPos >= 8) or (nPos < 0) then 
  begin
    result := 0;
    exit;
  end;
  
  if (nPos = 0) then
  begin
    result := cData and 1;
  end else
  begin
    result := cData and nPos*2;
    result := result shr nPos;
  end;
end;
----------------
in application
var
  v :Integer;
  ...
  v := TByte.GetBit(7, 2);
  ShowMessage(IntToStr(v));
  ...


以上介绍了“ 写一个关于字节的类(跪求好心人帮忙~~~~~~`````````)”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3677984.html

相关图片

相关文章