100分!懂C 的高手来拿吧!

flyinwuhan 2003-10-21 09:26:51
DWORD ByteIndex;
BYTE BitNumber;
PBYTE pANDBits;

pANDBits[ByteIndex] |= (1<<BitNumber);

pANDBits[ByteIndex] &= ~(1<<BitNumber);

谁能把上面两条语句转化为Pascal语句,立马给分!
拜托:请在delphi下试一下,通过了再答。。。
...全文
40 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2003-10-21
  • 打赏
  • 举报
回复
//...
PByteArray(pANDBits)^[ByteIndex] := PByteArray(pANDBits)^[ByteIndex] or (1 shl BitNumber);
PByteArray(pANDBits)^[ByteIndex] := PByteArray(pANDBits)^[ByteIndex] and ($FF xor (1 shl BitNumber));
//...
佣工7001 2003-10-21
  • 打赏
  • 举报
回复
如果你不想改变pANDBits的类型,就用位操作把其他的位去掉,然后付给一个BYTE类型的变量,再与1<<BitNumber进行运算。
pANDBits[ByteIndex] |= (1<<BitNumber); ——>>


var
ByteIndex :DWORD;
BitNumber:BYTE;
pANDBits:PBYTE;
pBit:BYTE;
n:Cardinal;
begin

n := pAndBits^;
n := (ByteIndex -1) shl n;
n:= n shr (32 - ByteIndex);
pBit := n;
pBit := pBit or (1 shl BitNumber);

end;
tigerhohoo 2003-10-21
  • 打赏
  • 举报
回复
刚才弄错了这个应该是正确的.
var
ByteIndex : DWORD;
BitNumber : BYTE;
pANDBits : PBYTE;
tmpBit : BYTE;
test : array[0..10] of BYTE;
pANDBitsArray : PByteArray;
begin
ByteIndex := 2;
test[2] := 101;
BitNumber := 1;
pANDBits := @test[0];
pANDBitsArray := ADDr(pANDBits^);
tmpBit := 1 shl BitNumber;
pANDBitsArray^[ByteIndex] := pANDBitsArray^[ByteIndex] or tmpBit;
tmpBit := 1 shl BitNumber;
pANDBitsArray^[ByteIndex] := pANDBitsArray^[ByteIndex] and (not tmpBit);
ShowMessage(IntToStr(integer(pANDBitsArray^[ByteIndex])));
end;
flyinwuhan 2003-10-21
  • 打赏
  • 举报
回复
To: zswangII(伴水清清)(职业清洁工)

我不想转化pANDBits的类型,因为它其实是本函数的一个参数,我为了演示才写在函数体内。
flyinwuhan 2003-10-21
  • 打赏
  • 举报
回复
To: tigerhohoo(老虎不吃人)
pANDBits不是数组类型,语法检查都通不过。。。。。。C太灵活了
zswangII 2003-10-21
  • 打赏
  • 举报
回复
//参考如下代码~~

//var
// pANDBits: array[0..N] of Byte; //建议声明成静态的数组~~
begin
//...
pANDBits[ByteIndex] := pANDBits[ByteIndex] or (1 shl BitNumber);
pANDBits[ByteIndex] := pANDBits[ByteIndex] and ($FF xor (1 shl BitNumber));
//...
end;
tigerhohoo 2003-10-21
  • 打赏
  • 举报
回复
BitNumber := 1 shl BitNumber;
pANDBits[ByteIndex] = pANDBits[ByteIndex] or BitNumber;
BitNumber := 1 shl BitNumber;
pANDBits[ByteIndex] = pANDBits[ByteIndex] and (not BitNumber);
ls2008 2003-10-21
  • 打赏
  • 举报
回复
我也頂!!
shanxing 2003-10-21
  • 打赏
  • 举报
回复
不懂,帮你顶一下
hiflower 2003-10-21
  • 打赏
  • 举报
回复
var
ByteIndex:DWord
BitNumber:Byte;
pANDBits:PByte;

PByteArray(pANDBits)[ByteIndex]:=PByteArray(pANDBits)[ByteIndex] or (1 shl BitNumber);

PByteArray(pANDBits)[ByteIndex]:=PByteArray(pANDBits)[ByteIndex] and not (1 shl BitNumber);

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧