#define DATATYPES
Describes the data types used in this documentation.
| BYTE | |
A single, lonely octet. | |
| WORD | |
A two-byte integer. Its endianness unknown, because the value it contains is yet unknown, it's always 0, or nobody entered the correct endianness yet. | |
| WORD.B | |
A two-byte integer in big-endian byte order, that is, the byte sequence 0xab 0xcd represents the value 0xabcd = 43981. | |
| WORD.L | |
A two-byte integer in little-endian byte order, that is, the byte sequence 0xab 0xcd represents the value 0xcdab = 52651. | |
| DWORD | |
A four-byte integer. Its endianness unknown, because the value it contains is yet unknown, it's always 0, or nobody entered the correct endianness yet. | |
| DWORD.B | |
A four-byte integer in big-endian byte order, that is, the byte sequence 0x12 0x34 0x56 0x78 represents the value 0x12345678 = 305419896. | |
| DWORD.L | |
A four-byte integer in little-endian byte order, that is, the byte sequence 0x12 0x34 0x56 0x78 represents the value 0x78563412 = 2018915346. | |
| IP | |
A four byte IP number, that is, the byte sequence 0x12 0x34 0x56 0x78 represents the IP address 18.52.86.120. | |
| COLOR | |
A four byte set of values for the three colors red, green, blue, where the last byte is unused and always zero, that is, the byte sequence 0x11 0xbb 0x66 0x00 represents the color with red at 6.6%, green at 73.3%, and blue at 40%. | |
| TIME | |
A time stamp in in seconds since the Computer epoch as a DWORD.B, that is, the current time, time(NULL), would be like the byte stream 0x3f 0x8e 0xfe 0x37. | |
| WTIME | |
A time stamp in 1/1500 seconds since 8am of that Sunday. From a struct timeval tv, as gotten by gettimeofday(), this value can be computed as: ((tv.tv_sec - 8 * 60 * 60) % (7 * 24 * 60 * 60)) * 1500 + (tv.tv_usec * 3) / 2000. | |
| STR | |
A string, that is, a byte sequence. It's encoding is detemined by external properties (it doesn't even have to be a C string), as well as its length. To make it explicit: there is no trailing zero in it. | |
| BUIN | |
The sequence BYTE STR, where the leading byte gives the length of the string. If you don't understand by looking up STR: no trailing zero again. | |
| BSTR | |
The sequence WORD.B STR, where the leading bytes give the length of the string. Did I already repeat "no trailing zero"? | |
| LNTS | |
The sequence WORD.L STR 0x00, where the leading bytes give the length of the string, including trailing null byte. E.g., the sequence 0x04 0x00 0x30 0x31 0x32 0x00 represents the string "012" in the US-ASCII character encoding. | |
| LLNTS | |
The sequence WORD.L LNTS, where the leading two bytes give the length in bytes of the LNTS and are redundant. E.g., the sequence 0x06 0x00 0x04 0x00 0x61 0x62 0x63 0x00 is the representation of the string "abc" in the US-ASCII encoding. | |
| DLStr | |
The sequence DWORD.L STR, where the leading four bytes determine the length of the string. Again, no trailing zero. | |
| CAP | |
A sequence of 16 bytes, dubbed capability, that often is a Windows ClassID. E.g. the sequence 0x09 0x46 0x13 0x4E 0x4C 0x7F 0x11 0xD1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00 represents the capability "{0946134E-4C7F-11D1-8222-444553540000}", dubbed CAP_UTF8. See CAPABILITIES for other used values. | |
| UINLIST | |
A sequence of BUINs. It's count is determined by external properties, e.g. a count or the remaining length of its container. | |
| DATA | |
A sequence of BYTEs. It's count is determined by external properties, e.g. a count or the remaining length of its container. Often, it represents a placed to be filled with (depending on some other value) some otehr sub-packet. E.g., the DATA part in a FLAC is often a SNAC. | |
| <numerical> | |
A sequence of |