Я относительно новичок в lua и программировании в целом (самоучка), поэтому, пожалуйста, будьте осторожны!
В любом случае, я написал скрипт lua для чтения UDP-сообщения из игры. Структура сообщения:
DATAxXXXXaaaaBBBBccccDDDDeeeeFFFFggggHHHH
DATAx = 4 letter ID and x = control character
XXXX = integer shows the group of the data (groups are known)
aaaa...HHHHH = 8 single-precision floating point numbers
Последние те цифры, которые мне нужно декодировать.
Если я распечатываю сообщение как полученное, оно выглядит примерно так:
DATA*{V???A?A?...etc.
Используя string.byte () , я получаю поток байтов, подобных этому (я «отформатировал» байты, чтобы отразить структуру выше.
68 65 84 65/42/20 0 0 0/237 222 28 66/189 59 182 65/107 42 41 65/33 173 79 63/0 0 128 63/146 41 41 65/0 0 30 66/0 0 184 65
Первые 5 байтов - это, конечно, ДАННЫЕ *. Следующие 4 являются 20-й группой данных. Следующие байты, которые мне нужно декодировать, равны этим значениям:
237 222 28 66 = 39.218
189 59 182 65 = 22.779
107 42 41 65 = 10.573
33 173 79 63 = 0.8114
0 0 128 63 = 1.0000
146 41 41 65 = 10.573
0 0 30 66 = 39.500
0 0 184 65 = 23.000
Я нашел код C #, который выполняет декодирование с помощью BitConverter.ToSingle () , но я не нашел ничего подобного для Lua.
Есть идеи?