DecodePacket (open)

Decode a binary packet

Syntax

// Core function, no LOADLIB necessary

RECORD FUNCTION DecodePacket(STRING format, STRING data)

Parameters

STRING format

Formatting string: field1:<type> [ repeatcounter | ? | * ],field2:<type> [ repeatcounter | ? | * ]

The following types are accepted:

Type Description
x Skip a NUL byte. If a count is specified, skip that many NULs. If '?', return number of bytes skipped. If '*', skip until non-NUL
b Signed 64bit long (little endian order, 64-bit)
B Unsigned 64bit long (little endian order, 64-bit)
c Signed character (8 bit)
C Unsigned character (8 bit)
d Signed 64bit long (big endian order, 64-bit)
D Unsigned 64bit long (big endian order, 64-bit)
s Signed short (little endian order, 16-bit)
S Unsigned short (little endian order, 16-bit)
l Signed long (little endian order, 32-bit)
L Unsigned long (little endian order, 32-bit)
n Signed short (big endian order/network byte order, 16-bit)
N Unsigned short (big endian order/network byte order, 16-bit)
p Signed long (big endian order/network byte order, 32-bit)
P Unsigned long (big endian order/network byte order, 32-bit)
a NUL-padded string (padded up to specified counter). If '*', simply read until NUL termination
A ASCII-padded string (paddedup to specified counter). If '*', simply read until space termination
r Raw data - take a string. If a counter is specified, that many bytes is taken. If '*', all remaining bytes are taken.
R Raw data - take a string and reverse it. If a counter is specified, that many bytes is taken. If '*', all remaining bytes are taken.
f Float (little endian order, 32-bit)
F Double (little endian order, 64-bit)
g Float (big endian order, 32-bit)
G Double (big endian order, 64-bit)
h Datetime (little endian order, 2x32-bit). First day, then mseconds
i Datetime (big endian order, 2x32-bit). First day, then mseconds
j Boolean (8-bit)
@@ Jump to absolute position in packet decoder. }
STRING data

Data to decode

Return value

RECORD

A record containing the decoded data, or a non-existing record if the decoding failed