gpt4 book ai didi

c - 一个C代码的Delphi等效代码

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:12 24 4
gpt4 key购买 nike

我已经很久没有写过C代码了。有谁知道如何将这段代码翻译成 Delphi 2010?

char * pAlignedBuf = (char *) ((int(buf) + 7) & ~7);

其中 buf 是 char * buf

我知道char *Pchar,但是我不知道&~7是什么。

最佳答案

& 是按位 and 运算符。

~ id 按位一元 not 运算符。

~7 是低 3 位全部设为 0 的数。

& ~7 将左侧的所有低 3 位设为 0。

赋值右边的 (char *) 是硬转换为 char *

int(buf) 是将 buf 强制转换为整数。

该代码可以用 pascal 编写,如下所示:

var pAlignedBuf: PChar;
pAlignedBuf := PChar((integer(Buf) + 7) and (not 7))

这是一种从 Buf 中获取 8 字节对齐缓冲区的方法。它的工作原理是将 Buf 递增 7,然后清除低 3 位。


编辑

为了安全起见,由于 Delphi 64 位即将到来,该代码可以表示为:

var pAlignedBuf: PChar;
pAlignedBuf := PChar(NativeUInt(Buf) + 7) and (not 7))

对于那些不喜欢按位逻辑的人,它可以再次重写为:

var pAlignedBuf: PChar;
pAlignedBuf := PChar(((NativeUInt(Buf) + 7) div 8) * 8);

关于c - 一个C代码的Delphi等效代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568305/

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