Thread overview |
---|
August 29, 2015 What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
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? |
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to cym13 | 29.08.2015 15:56, cym13 пишет: > 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? > Try, for example, MessagePack https://github.com/msgpack/msgpack-d.git |
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to drug | On Saturday, 29 August 2015 at 13:56:10 UTC, drug wrote:
> Try, for example, MessagePack https://github.com/msgpack/msgpack-d.git
Thanks, but it isn't answering the question at all. I'm not looking for a
serialization method, I'm looking for the best way to read a binary file.
|
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to cym13 | 29.08.2015 17:17, cym13 пишет:
> On Saturday, 29 August 2015 at 13:56:10 UTC, drug wrote:
>> Try, for example, MessagePack https://github.com/msgpack/msgpack-d.git
>
> Thanks, but it isn't answering the question at all. I'm not looking for a
> serialization method, I'm looking for the best way to read a binary file.
>
It depends on what is the best for you. But using MessagePack you can easily read the file and fill a structure with it.
|
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to drug | On Saturday, 29 August 2015 at 14:52:51 UTC, drug wrote:
> 29.08.2015 17:17, cym13 пишет:
>> On Saturday, 29 August 2015 at 13:56:10 UTC, drug wrote:
>>> Try, for example, MessagePack https://github.com/msgpack/msgpack-d.git
>>
>> Thanks, but it isn't answering the question at all. I'm not looking for a
>> serialization method, I'm looking for the best way to read a binary file.
>>
> It depends on what is the best for you. But using MessagePack you can easily read the file and fill a structure with it.
No, because messagepack is one format of binary file. That isn't going to be of any help for any other binary file format. It is not a way to read binary files. It is a serialization format.
|
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to cym13 | 29.08.2015 18:05, cym13 пишет:
> On Saturday, 29 August 2015 at 14:52:51 UTC, drug wrote:
>> 29.08.2015 17:17, cym13 пишет:
>>> On Saturday, 29 August 2015 at 13:56:10 UTC, drug wrote:
>>>> Try, for example, MessagePack https://github.com/msgpack/msgpack-d.git
>>>
>>> Thanks, but it isn't answering the question at all. I'm not looking
>>> for a
>>> serialization method, I'm looking for the best way to read a binary
>>> file.
>>>
>> It depends on what is the best for you. But using MessagePack you can
>> easily read the file and fill a structure with it.
>
> No, because messagepack is one format of binary file. That isn't going
> to be of any help for any other binary file format. It is not a way to
> read binary files. It is a serialization format.
I see.
|
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to cym13 | 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?
Align(1) ?
|
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Laeeth Isharc | On Saturday, 29 August 2015 at 16:47:23 UTC, Laeeth Isharc wrote:
> Align(1) ?
That should do it, thanks :)
|
August 29, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to cym13 | On Saturday, 29 August 2015 at 16:55:44 UTC, cym13 wrote:
> On Saturday, 29 August 2015 at 16:47:23 UTC, Laeeth Isharc wrote:
>> Align(1) ?
>
> That should do it, thanks :)
Do not forget to post code example, please, it's interesting to look at your solution...
|
August 30, 2015 Re: What is the D way to map a binary file to a structure? | ||||
---|---|---|---|---|
| ||||
Posted in reply to cym13 | 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? https://github.com/atilaneves/cerealed Just pass the bytes obtained from reading the file to `Decerealiser`. Atila |
Copyright © 1999-2021 by the D Language Foundation