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