# 00051. Работа с HEX. HEX-буфер

Работа с HEX. HEX-буфер|В этом уроке мы познакомимся с одной возможностью блока HEX-END - буффером данных.|wmysterio|||||Здравствуйте, друзья! Очень давно я планировал сделать урок по HEX, но никак руки не доходили. Я не знаю всех возможможностей этого блока, но использовать его как буфер я умею.

Давайте определим понятие "Буфер", так как не все понимают что это такое. Я находил в интернете значение слова "Buffer", но все они такто туманно описывают это слово. Что же оно значит с точки зрения программирования ( скриптинга ) ? Если говорить простым языком, буфер - это произвольный набор данных, который имеет свою структуру.

Сами структуры Вы могли наблюдать в уроках о [выделении памяти](https://github.com/wmysterio/scm-scripting-lessons/blob/main/publ/gta_sa/obucheniye_skriptinga/vydelenie_pamjati/34-1-0-258/README.md) и [форматированном считывании с файла](https://github.com/wmysterio/scm-scripting-lessons/blob/main/publ/gta_sa/obucheniye_skriptinga/rabota_s_fajlami_formatirovannoe_schityvanie/34-1-0-150/README.md). В первом случае у нас была простая структура - набор актёров. Во втором ( последний пример ) : цепочка данных с целых и дробных чисел.

Как видим, структуру определяет разработчик, в зависимости от потребности. Но если в ситуации с файлами мы могли наблюдать данные в явном виде, то с выделением памяти всё выглядело более абстрактно. HEX-буфер в этой ситуации является гибридом - данные "вшиваются" в скрипт в явном виде, но дальнейшая работа переходит в абстрактную, так как мы не будем знать какие там данные будут находится в процессе записи.

Для того, чтобы работать с буфером, нужно научится его создавать. Для этого нужно точно знать какие данные он будет хранить. Пусть это будут актёры, как в ситуации с выделением памяти. Узнаём размер ( в байтах ) одной ячейки этой структуры, после чего узнаём максимальное количество элементов такой структуры. Табличка с размерами приведена ниже:

| Тип данных               | Размеры ( байт ) |
| ------------------------ | ---------------- |
| float                    | 4                |
| int                      | 1, 2, 3 или 4    |
| sString                  | 8                |
| vString                  | 16               |
| Actor, Car, Objet и т.п. | 4                |

× **Примечание:\*\* Актёры, транспорт и подобные сущности записываются как целые числа20 \* 4 = 80 байт**![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/2/39452924.png)![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/2/07680778.png)**handle, model, x, y, z**\
**4+4+4+4+4=20 байт5\*20=100 байт**![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/2/06422655.png)**8+16=24 байта**![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/2/94776099.png)![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/2/33452984.png)**× \*\*ВАЖНО:\*\* HEX-буфер временно сохраняет данные. Другими словами после перезагрузки игры данные возвращаются в изначальный вид.**
