Skip to main content

XBin Format Reference

The XBin (XINA Binary) format provides a XINA standard binary format for time based data files. It uses the file extension xbin.

The xbin format organizes key-value data by time. The data content is a series of rows in ascending time order, with each row having a single microsecond precision Unix time, unique within the file.

XBin data is often encoded in segments, which are defined by an initial signed integer byte length, then that number of bytes. These are referred to in this document as:

  • seg1 (up to 127 bytes)
  • seg2 (up to 32,767 bytes)
  • seg4 (up to 2,147,483,647 bytes)

If the length value of a segment is zero there is no following data and the value is considered empty.

UUID

The file starts with a 16 byte binary encoded UUID. This is intended to uniquely identify the file, but the exact implementation and usage beyond this is not explicitly defined as part of the format definition. For XINA purposes two xbin files with the same UUID would be expected to be identical.

Header

This is followed by a seg4, which contains a single JSON object with UTF-8 encoding. It may be empty. This is currently a placeholder with no defined parameters.

Rows

Each row starts with an 8 byte signed integer containing Unix time with microsecond precision. This is followed by a 4 byte unsigned integer denoting the length of the row in bytes.

Values

Each value starts with a 1 byte unsigned integer indicating the value reference type.

This is followed by a 1 byte unsigned integer indicating the value type.

Value Type Definition

Code Value Description
0 null literal null / empty string
1 string value reference see below
2 true boolean literal
3 false boolean literal
4 1 byte signed integer
5 2 byte signed integer
6 4 byte signed integer
7 8 byte signed integer
8 4 byte floating point
9 8 byte floating point
10 string1 seg1 UTF-8 encoded string
11 string2 seg2 UTF-8 encoded string
12 string4 seg4 UTF-8 encoded string
13 json1 seg1 UTF-8 encoded JSON
14 json2 seg2 UTF-8 encoded JSON
15 json4 seg4 UTF-8 encoded JSON