---
title: "Codificări de octeți și sume de control"
description: "Codificări de octeți în scriptul TapHome: Base64 și base64url pentru date binare, text hexazecimal, CRC16 în varianta Modbus, XMODEM, CCITT-FALSE sau KERMIT și CRC32."
url: "https://taphome.com/ro/docs/script/byte-encodings/"
language: ro
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["byte-encodings","packet-parser","modbus","scripting-language"]
  questions: ["Cum se decodifică date binare Base64 într-un script TapHome?","Cum se transformă octeții în text hexazecimal într-un script TapHome?","Cum se calculează într-un script un CRC16 Modbus RTU?","Ce versiune de Core necesită funcțiile de codificare a octeților?"]
---

# Codificări de octeți și sume de control

Funcții de script TapHome TOBASE64 și FROMBASE64 (și base64url), TOHEX și FROMHEX, CRC16 și CRC32 — octeți ca text și înapoi și sume de control ale cadrelor.

Ultima actualizare: 2026-11-06

`TOBASE64`, `FROMBASE64`, `TOHEX`, `FROMHEX`, `CRC16` și `CRC32` transformă octeții în text și înapoi și calculează sume de control, de obicei împreună cu [funcțiile de criptare și hash](https://taphome.com/ro/docs/script/encryption-and-hashes/). Ele doar construiesc valori, așa că funcționează în orice script. Toate necesită TapHome Next 2026.1.40991+.

`TOBASE64`, `TOHEX`, `CRC16` și `CRC32` primesc date de octeți ca funcțiile de criptare: o `collection<uint8>`, un blob sau un șir, folosit ca octeți ISO-8859-1 (pentru UTF-8 transmiteți `TOBYTES(text, "utf-8")`). `TOBASE64` și `TOHEX` returnează un șir, `CRC16` și `CRC32` un număr `uint`; `FROMBASE64` și `FROMHEX` primesc text și returnează o `collection<uint8>`.

## TOBASE64, FROMBASE64

`TOBASE64` transformă date de octeți în text Base64, `FROMBASE64` transformă textul Base64 înapoi în octeți.

```text
TOBASE64(data [, variant])
FROMBASE64(text [, variant])
```

`variant` este `"standard"` (implicit) sau `"url"`, fără deosebire între majuscule și minuscule. `"url"` este base64url (RFC 4648 §5), care folosește `-` și `_` în loc de `+` și `/`. `TOBASE64` cu `"url"` omite completarea `=`, așa cum așteaptă JWT și majoritatea API-urilor web (Python `base64.urlsafe_b64encode(data).rstrip(b"=")`); `FROMBASE64` cu `"url"` acceptă text cu sau fără completare.

**Returnează** — `TOBASE64` un șir, `FROMBASE64` o `collection<uint8>`.

**Observații** — [ENCODE și DECODE](https://taphome.com/ro/docs/script/data-type-conversions/#encode) cu `"base64"` trec prin text UTF-8, așa că octeții peste `0x7F` nu rămân intacți. Datele criptate și alte date binare trec prin `TOBASE64` și `FROMBASE64`.

**Exemplu**

```taphome
# Base64 standard pentru doi octeți
TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
# base64url: fără completare, - și _ în loc de + și /
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
# decodarea base64url înapoi în text hex
TOHEX(FROMBASE64("-_8", "url"));
# Result: "fbff"
```

**Erori** — *TOBASE64 Unknown variant. Valid values are 'standard', 'url'* (`FROMBASE64` își scrie propriul nume); *FROMBASE64 - '+' and '/' are not base64url characters, leave the "url" argument out for standard Base64*; *FROMBASE64 - argument must be a string*; *The provided text does not have the base64 format.*

**Disponibilitate** — TapHome Next 2026.1.40991+.

## TOHEX, FROMHEX

`TOHEX` returnează date de octeți ca text hexazecimal cu litere mici, `FROMHEX` transformă textul hexazecimal înapoi în octeți.

```text
TOHEX(data)
FROMHEX(text)
```

**Observații**

- `FROMHEX` acceptă cifre cu majuscule și minuscule și spații între ele, ca `bytes.fromhex` din Python. Orice alt caracter, inclusiv un prefix `0x` sau separatori `:`, este o eroare, la fel ca un număr impar de cifre. Un șir gol dă o colecție goală.
- Spre deosebire de [BYTECOLLECTION](https://taphome.com/ro/docs/script/text-string-and-byte-array/#bytecollection) din text hexazecimal, care ignoră în tăcere celelalte caractere și este limitată la 2048 de octeți, `FROMHEX` nu are limită de lungime, așa că transformă înapoi tot ce a produs `TOHEX`.

**Exemplu**

```taphome
# trei octeți ca Base64
TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
# Base64 înapoi în octeți, apoi text hex
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
# literele mari și spațiile sunt acceptate
TOHEX(FROMHEX("FF 00 80"));
# Result: "ff0080"
```

**Erori** — *FROMHEX - invalid hex digit 'x'* (eliminați un prefix sau separatorii cu `REPLACE`); *FROMHEX - the number of hex digits must be even, it is N*; *FROMHEX - argument must be a string*.

**Disponibilitate** — TapHome Next 2026.1.40991+.

## CRC16, CRC32

`CRC16` returnează suma de control CRC pe 16 biți a datelor de octeți, `CRC32` suma CRC-32 din zlib, Ethernet și ZIP (Python `zlib.crc32`).

```text
CRC16(data [, variant])
CRC32(data)
```

`variant` alege parametrii funcției `CRC16`, fără deosebire între majuscule și minuscule. Valoarea de verificare este CRC-ul textului `"123456789"`:

| `variant` | Valoare de verificare | Cunoscut și ca |
|---|---|---|
| `"MODBUS"` (implicit) | `0x4B37` | cadre Modbus RTU |
| `"XMODEM"` | `0x31C3` | Python `binascii.crc_hqx(data, 0)` |
| `"CCITT-FALSE"` | `0x29B1` | `"IBM-3740"` este acceptat ca aceeași variantă |
| `"KERMIT"` | `0x2189` | |

Valoarea de verificare a `CRC32` este `0xCBF43926` (3421780262).

**Returnează** — un număr `uint`, nu octeți. Pentru a pune suma de control într-un cadru, împachetați-o cu [PACKVALUE](https://taphome.com/ro/docs/script/binary-data/#packvalue) în ordinea octeților pe care o așteaptă protocolul; Modbus RTU trimite mai întâi octetul inferior.

**Exemplu**

```taphome
TOSTRING(CRC16(FROMHEX("0103000A0001")), "X4");
# Result: "08A4"
TOSTRING(CRC32("123456789"), "X8");
# Result: "CBF43926"
```

**Exemplu — adăugarea unei sume de control Modbus RTU**

```taphome
# octeții cadrului din text hex
VAR frame := FROMHEX("01 03 00 0A 00 01");
# buffer gol de 2 octeți pentru suma de control
VAR crc := BYTECOLLECTION(2);
# împachetarea CRC16 cu octetul inferior primul
PACKVALUE(crc, 0, LittleEndianUint16, CRC16(frame));
# adăugarea sumei de control la cadru
APPEND(frame, crc);
# Result: frame is 01 03 00 0A 00 01 A4 08
```

**Erori** — *CRC16 Unknown variant. Valid values are 'MODBUS', 'XMODEM', 'CCITT-FALSE', 'KERMIT'*.

**Disponibilitate** — TapHome Next 2026.1.40991+.

**Consultați și** — [Criptare și hash-uri](https://taphome.com/ro/docs/script/encryption-and-hashes/), [Date binare](https://taphome.com/ro/docs/script/binary-data/), [Conversii de tipuri de date](https://taphome.com/ro/docs/script/data-type-conversions/).
