> For the complete documentation index, see [llms.txt](https://ru.gentee.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ru.gentee.org/stdlib/buffer.md).

# Буфер

Здесь описаны операторы и функции для работы со двоичными данными в виде массива байт (тип **buf**).

* [bool( buf b ) bool](/stdlib/buffer.md#bool-buf-b-bool)
* [buf( str s ) buf](/stdlib/buffer.md#buf-str-s-buf)
* [str( buf b ) str](/stdlib/buffer.md#str-buf-b-str)
* [Base64( buf b ) str](/stdlib/buffer.md#base-64-buf-b-str)
* [DecodeInt( buf b, int offset ) int](/stdlib/buffer.md#decodeint-buf-b-int-offset-int)
* [Del( buf b, int off, int length ) buf](/stdlib/buffer.md#del-buf-b-int-off-int-length-buf)
* [EncodeInt( buf b, int i ) buf](/stdlib/buffer.md#encodeint-buf-b-int-i-buf)
* [Hex( buf b ) str](/stdlib/buffer.md#hex-buf-b-str)
* [Insert( buf b, int off, buf src) buf](/stdlib/buffer.md#insert-buf-b-int-off-buf-src-buf)
* [SetLen( buf b, int size ) buf](/stdlib/buffer.md#setlen-buf-b-int-size-buf)
* [Subbuf( buf b, int off, int length ) buf](/stdlib/buffer.md#subbuf-buf-b-int-off-int-length-buf)
* [UnBase64( str s ) buf](/stdlib/buffer.md#unbase-64-str-s-buf)
* [UnHex( str s ) buf](/stdlib/buffer.md#unhex-str-s-buf)
* [Write( buf b, int off, buf src ) buf](/stdlib/buffer.md#write-buf-b-int-off-buf-src-buf)

## Операторы

| Оператор             | Результат | Описание                                                                      |
| -------------------- | --------- | ----------------------------------------------------------------------------- |
| **\*** buf           | int       | Получить размер буфера в байтах.                                              |
| buf **?**            | bool      | Вызов *bool(buf)*.                                                            |
| buf **+** buf        | buf       | Объединить два буфера.                                                        |
| buf **=** buf        | buf       | Присваивание двоичных данных.                                                 |
| buf **&=** buf       | buf       | Создать клон буфера. Новая переменная будет работать с тем же набором данных. |
| buf **+=** buf       | buf       | Добавить один буфер к другому.                                                |
| buf **+=** int       | buf       | Добавить один байт к буферу. Число должно быть меньше 256.                    |
| buf **+=** str       | buf       | Добавить строку к буферу.                                                     |
| buf **+=** char      | buf       | Добавить символ к буферу.                                                     |
| buf **\[** int **]** | int       | Присвоить/получить байт по индексу.                                           |

## Функции

### bool(buf b) bool

Функция *bool* возвращает *false*, если буфер пустой. В противном случае, возвращается *true*.

### buf(str s) buf

Функция *buf* конвертирует строку в значение типа *buf* и возвращает его.

### str(buf b) str

Функция *str* конвертирует значение типа *buf* в строку и возвращает её.

### Base64(buf b) str

Функция *Base64* преобразует значение типа *buf* в строку в кодировке **base64** и возвращает её.

### DecodeInt(buf b, int offset) int

Функция *DecodeInt* получает целое число из параметра типа *buf*. *offset* - смещение в буфере, по которому необходимо прочитать число. Функция читает 8 байт и возвращает их как целое число.

### Del(buf b, int off, int length) buf

Функция *Del* удалять часть данных из массива байт. *off* - смещение удаляемых данных, *length* - количество удаляемых байт. Если *length* меньше нуля, то данные будут удаляться слева от указанного смещения. Функция возвращает переменную *b*, в которой произошло удаление.

### EncodeInt(buf b, int i) buf

Функция *EncodeInt* добавляет целое число к указанной переменной типа *buf*. Так как значение *int* занимает 8 байт, то к буферу добавляется 8 байт независимо от значения параметра *i*. Функция возвращает параметр *b*.

### Hex(buf b) str

Функция *Hex* преобразует значение типа *buf* в шестнадцатеричную строку и возвращает её.

### Insert(buf b, int off, buf src) buf

Функция *Insert* вставляет массив байт *src* в массив *b*. *off* - смещение, куда будет вставлен указанный массив байт. Функция возвращает переменную *b*.

### SetLen(buf b, int size) buf

Функция *SetLen* устанавливает размер буфера. Если *size* меньше размера буфера, то он будет обрезан. В противном случае, буфер будет дополнен нулями до указанного размера.

### Subbuf(buf b, int off, int length) buf

Функция *Subbuf* возвращает возвращает новый буфер, который содержит фрагмент буфера *b* с указанным смещением и длиной.

### UnBase64(str s) buf

Функция *UnBase64* преобразует строку в кодировке **base64** в значение типа *buf* и возвращает его.

### UnHex(str s) buf

Функция *UnHex* преобразует шестнадцатеричную строку в значение типа *buf* и возвращает его. Входящая строка должна содержать только шестнадцатеричные символы.

### Write(buf b, int off, buf src) buf

Функция *Write* записывает массив байт переменной *src* в переменную *b* начиная с указанного смещения. Данные записываются поверх существующих значений. Функция возвращает переменную *b*.
