Such binary files consist of two records:
*description* whose length is 32 bytes and
*data* whose length is determined by the description.
The rest of the bytes are of special use described below or ignored.

Description record consists of four groups of bytes:

- format
*identifier*as`integer[4]`

- format
*code*as 4 bytes *dimensions*as`list(integer[4])`

whose format is determined by the code- the rest of the bytes if any are ignored

Format identifier for version 1 is equal to 1760568055 and is unique with alternative byte orderings taken into account (-148705176).

Format code consists of 4 bytes defined as follows:

- element
*type*: 1 – integer, 2 – float - element
*size*in bytes: 1, 2, 4, 8 *shape*:- 1 – vector, 11 – vector (column), 12 – vector (row), 13 – vector of lists (each element can be a list),
- 2 or 21 – matrix (row by row), 22 – matrix (column by column),
- 3 or 31 – symmetric matrix (lower triangle in row by row order), 32 – symmetric matrix (lower triangle in column by column order),
- 41, 42, 43, 44 – array whose number of dimensions is given by the second digit

*byte ordering*: 1 – native (default), 2 – network, 3 – big, 4 – little

The dimensions list depends on the shape:

- vector –
`[n]`

gives its size - matrix –
`[n,m]`

, where`n/m`

is the row/column dimension - symmetric matrix –
`[n]`

gives the number of rows or columns (it is square) - array –
`[n1,n2,n3,...]`

gives the array dimensions

Additional bytes are used as follows:

- 13 –
`list(byte)`

describes datatypes for the list elements: 0/128+1,2,4,8 means integer/float of size 1,2,4,8

Finally, data record gives the elements one by one in the order prescribed by the shape. For shape 13, vector of varying dimensions (described by code) is followed by linearized records corresponding to the fixed secondary dimension.

Code for reading/writing such binary files: Maple – BasicTools[ReadBIN/WriteBIN], Python – BasicTools.ReadBIN/WriteBIN, Fortran – see readdump for example

Test samples:

```
file=bin.evl
```

code=[2,8,1,1]

dims=[31]

data=[-522.788480,-521.586832,-281.447629,...,46.626176]

elements: [1]=-522.788480, sum=-1086.285092

file=bin.evc

code=[2,8,22,1]

dims=[31,31]

data=[0.000047,-0.000188,-0.000145,...,-0.092279]

elements: [1,1]=0.000047, [2,1]=-0.000188, [1,2]=0.000218, sum=19.433223

file=bin.s1e

code=[2,8,3,1]

dims=[31]

data=[1.000000,0.219059,1.000000,...,1.000000]

elements: [1,1]=1.000000, [1,2]=[2,1]=0.219059, [2,2]=1.000000, sum=66.308944