Skip to content

Primitive data types

Mikhail Yakshin edited this page Mar 11, 2016 · 4 revisions

There are several data types predefined in Kaitai Struct, thus they are used as basic building blocks for more complex data types:

Integers

Generally, integer type specification follows this pattern: ([us])(1|2|4|8)(le|be)

  • First letter — u or s — specifies either unsigned or signed integer respectively
  • Second group — 1, 2, 4 or 8 — specifies width of an integer in bytes
  • Third group — le or be — specifies little-endian or big-endian encoding respectively; it can be omitted if default endianness specified in meta.endian in file description.

For the sake of completeness, here's the full table of available integer types:

type Width, bits Signed? Endianness Min value Max value
u1 8 No N/A 0 255
u2le 16 No Little 0 65535
u2be 16 No Big 0 65535
u4le 32 No Little 0 4294967295
u4be 32 No Big 0 4294967295
u8le 64 No Little 0 18446744073709551615
u8be 64 No Big 0 18446744073709551615
s1 8 Yes N/A -128 127
s2le 16 Yes Little -32768 32767
s2be 16 Yes Big -32768 32767
s4le 32 Yes Little -2147483648 2147483647
s4be 32 Yes Big -2147483648 2147483647
s8le 64 Yes Little -9223372036854775808 9223372036854775807
s8be 64 Yes Big -9223372036854775808 9223372036854775807

Strings

  • str
  • strz
Clone this wiki locally