Die grösse muss ja nicht in Hex, sondern binär gespeichert werden. Leider müssen vorher die Bytes umgedreht werden (Stichwort
Little Endian und
Big Endian).
Delphi-Quellcode:
procedure SchreibeFrameHeaderAPIC;
var buf : PByteArray;
imgSize : Integer;
imgHex : String;
begin
GetMem(buf,4);
imgSize := FileSize(coverimg);
ImgSize := ((ImgSize and $FF000000) shr 24) +
((ImgSize and $00FF0000) shr 8) +
((ImgSize and $0000FF00) shl 8) +
((ImgSize and $000000FF) shl 24) ;
CopyMemory(buf, @ImgSize, 4);
//...
BlockWrite(mp3file,buf^,4);
FreeMem(Buf);
end;