I have to pack and unpack a Cardinal into four one-byte fields (in Delphi 2010).
I’m doing this across all the pixels of a large image, so I need it to be fast!
Can anyone show me how to write these two functions? (The const and out keywords are just for clarity. If they interfere with inline assembly, then I can remove them.)
procedure FromCardinalToBytes( const aInput: Cardinal;
out aByte1: Byte;
out aByte2: Byte;
out aByte3: Byte;
out aByte4: Byte); inline;
function FromBytesToCardinal( const aByte1: Byte;
const aByte2: Byte;
const aByte3: Byte;
const aByte4: Byte):Cardinal; inline;
There are many ways. The simplest is
Slightly more sophisticated (but not necessarily faster) is
If you don’t need the bytes to be byte variables, you can do even trickier things, like declaring
and then just cast: