Warm tip: This article is reproduced from serverfault.com, please click

其他-Delphi XE3->整数到字节数组

(其他 - Delphi XE3 -> Integer to array of Bytes)

发布于 2012-11-29 20:32:41

我有一个数据结构:

data = array of integer;

我已经从一个

source = array of byte;

data[x] := Source[offset] or (Source[offset + 1] shl 8) or
    (Source[offset + 2] shl 16) or (Source[offset + 3] shl 24);

处理完这些块后,我必须将它们恢复为“字节” ...

任何想法?

Questioner
Michael Grenzer
Viewed
0
117k 2012-11-30 08:23:12

你可以使用Move以单线方式执行此操作。

Move(source[0], dest[0], Length(source)*SizeOf(source[0]));

如果你需要执行网络/主机字节顺序转换,则可以在后面的整数数组上运行Move

在相反的方向上,你将全部反向进行。

如果没有字节顺序问题,那么实际上可能根本不需要转换为字节数组。你可以按原样使用整数数组。请记住,在没有字节顺序问题的情况下,字节数组和整数数组的内存布局是相同的(这就是为什么你可以使用blit的原因Move)。