On Saturday, 29 August 2015 at 12:56:08 UTC, cym13 wrote:
Hi,

Let's say I have a simple binary file whose structure is well-known. Here is
an example which stores points:

struct Point {
    long x;
    long y;
    long z;
}

struct BinFile {
    uint    magicNumber;  // Some identifier
    ulong   pointsNumber;
    Point[] points;       // Array of pointsNumber points.
}

What is the best way to read some file and fill a structure with it? Would reading the file into a void[] and then casting it to the struct work with
things like internal struct padding?

struct Point {
     long x;
     long y;
     long z;
}

struct BinFile {
    uint    magicNumber;  // Some identifier
    ulong   pointsNumber;
    Point[] points;       // Array of pointsNumber points.

    this(ubyte [] buf)
    {
        auto f = cast(BinFile *)buf.ptr;
        this = cast(BinFile)*f;
this.points = (cast(Point*)&f.points)[0..cast(uint)this.pointsNumber];
    }
}


Reply via email to