# 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-буфер временно сохраняет данные. Другими словами после перезагрузки игры данные возвращаются в изначальный вид.**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lessons.sannybuilder.com/00100/00400/00051.-rabota-s-hex.-hex-bufer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
