gpt4 book ai didi

c - 按位比较和将 C 转换为 Delphi

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:29 35 4
gpt4 key购买 nike

我有以下 C 代码:

pIBM [unsigned char *, a function parameter, for input]
pIEEE [unsigned char *, a function parameter, for output]

char tmp[8];

memcpy(tmp, pIBM, 8);
memset(pIEEE, 0, 8);

if (*tmp && memcmp(tmp+1, pIEEE, 7) == 0)
{
pIEEE[0] = pIEEE[1] = 0xff;
pIEEE[2] = ~(*tmp);

return;
}
  1. if (*tmp && memcmp(tmp+1, pIEEE, 7) == 0) 是如何工作的?
  2. 如何将 C 代码转换为 Delphi、文字和/或其他方式?

最佳答案

if (*tmp && memcmp(tmp+1, pIEEE, 7) == 0)

这里的tmp是一个衰减为指针的数组。所以当 tmp[0] 不等于 0 时,*tmp 为真。当数组的最后 7 个元素与 pIEEE 的内容匹配时,memcmp 测试返回 true。 pIEEE 被初始化为包含零。我想您知道 && 是逻辑 AND 运算符。

如果我用 Delphi 编写它,它看起来像这样:

type
TMyData = array [0..7] of Byte;

function Foo(const IBM: TMyData): TMyData;
begin
FillChar(Result, 8, 0);
if (IBM[0]<>0) and CompareMem(@IBM[1], @Result[0], 7) then
begin
Result[0] := $ff;
Result[1] := $ff;
Result[2] := not IBM[0];
end;
end;

关于c - 按位比较和将 C 转换为 Delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28094048/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com