---
title: "Kodiranje bajtova i kontrolni zbrojevi"
description: "Kodiranje bajtova u skripti TapHome: Base64 i base64url binarnih podataka, heksadecimalni tekst, CRC16 u varijanti Modbus, XMODEM, CCITT-FALSE ili KERMIT te CRC32."
url: "https://taphome.com/hr/docs/script/byte-encodings/"
language: hr
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["byte-encodings","packet-parser","modbus","scripting-language"]
  questions: ["Kako u skripti TapHome dekodirati binarne podatke u Base64?","Kako u skripti TapHome pretvoriti bajtove u heksadecimalni tekst?","Kako u skripti izračunati CRC16 za Modbus RTU?","Koju verziju Core trebaju funkcije kodiranja bajtova?"]
---

# Kodiranje bajtova i kontrolni zbrojevi

Funkcije skripte TapHome TOBASE64 i FROMBASE64 (i base64url), TOHEX i FROMHEX, CRC16 i CRC32 — bajtovi kao tekst i natrag te kontrolni zbrojevi okvira.

Posljednje ažuriranje: 2026-11-06

`TOBASE64`, `FROMBASE64`, `TOHEX`, `FROMHEX`, `CRC16` i `CRC32` pretvaraju bajtove u tekst i natrag te računaju kontrolne zbrojeve, obično zajedno s [funkcijama šifriranja i hasheva](https://taphome.com/hr/docs/script/encryption-and-hashes/). Samo sastavljaju vrijednosti, pa rade u svakoj skripti. Sve trebaju TapHome Next 2026.1.40991+.

`TOBASE64`, `TOHEX`, `CRC16` i `CRC32` primaju podatke u bajtovima kao i funkcije šifriranja: `collection<uint8>`, blob ili niz, koji se koristi kao bajtovi ISO-8859-1 (za UTF-8 predajte `TOBYTES(text, "utf-8")`). `TOBASE64` i `TOHEX` vraćaju niz, `CRC16` i `CRC32` broj `uint`; `FROMBASE64` i `FROMHEX` primaju tekst i vraćaju `collection<uint8>`.

## TOBASE64, FROMBASE64

`TOBASE64` pretvara podatke u bajtovima u tekst Base64, `FROMBASE64` pretvara tekst Base64 natrag u bajtove.

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

`variant` je `"standard"` (zadano) ili `"url"`, bez obzira na velika i mala slova. `"url"` je base64url (RFC 4648 §5), koji umjesto `+` i `/` koristi `-` i `_`. `TOBASE64` s `"url"` izostavlja nadopunu `=`, kako očekuju JWT i većina web API-ja (Python `base64.urlsafe_b64encode(data).rstrip(b"=")`); `FROMBASE64` s `"url"` prihvaća tekst s nadopunom i bez nje.

**Vraća** — `TOBASE64` niz, `FROMBASE64` `collection<uint8>`.

**Napomene** — [ENCODE i DECODE](https://taphome.com/hr/docs/script/data-type-conversions/#encode) s `"base64"` prolaze kroz tekst u UTF-8, pa bajtovi iznad `0x7F` u njima ne ostaju ispravni. Šifrirani i drugi binarni podaci idu kroz `TOBASE64` i `FROMBASE64`.

**Primjer**

```taphome
# standardni Base64 dvaju bajtova
TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
# base64url: bez nadopune, - i _ umjesto + i /
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
# dekodiranje base64url natrag u heksadecimalni tekst
TOHEX(FROMBASE64("-_8", "url"));
# Result: "fbff"
```

**Pogreške** — *TOBASE64 Unknown variant. Valid values are 'standard', 'url'* (`FROMBASE64` navodi svoj naziv); *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.*

**Dostupno** — TapHome Next 2026.1.40991+.

## TOHEX, FROMHEX

`TOHEX` vraća podatke u bajtovima kao heksadecimalni tekst malim slovima, `FROMHEX` pretvara heksadecimalni tekst natrag u bajtove.

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

**Napomene**

- `FROMHEX` prihvaća znamenke velikim i malim slovima i razmake između njih, kao `bytes.fromhex` u Pythonu. Svaki drugi znak, uključujući prefiks `0x` ili razdjelnike `:`, pogreška je, kao i neparan broj znamenki. Prazan niz daje praznu zbirku.
- Za razliku od [BYTECOLLECTION](https://taphome.com/hr/docs/script/text-string-and-byte-array/#bytecollection) iz heksadecimalnog teksta, koji druge znakove tiho zanemaruje i ograničen je na 2048 bajtova, `FROMHEX` nema ograničenje duljine, pa vraća natrag sve što je `TOHEX` proizveo.

**Primjer**

```taphome
# tri bajta kao Base64
TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
# Base64 natrag u bajtove, zatim heksadecimalni tekst
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
# velika slova i razmaci su dopušteni
TOHEX(FROMHEX("FF 00 80"));
# Result: "ff0080"
```

**Pogreške** — *FROMHEX - invalid hex digit 'x'* (prefiks ili razdjelnike uklonite funkcijom `REPLACE`); *FROMHEX - the number of hex digits must be even, it is N*; *FROMHEX - argument must be a string*.

**Dostupno** — TapHome Next 2026.1.40991+.

## CRC16, CRC32

`CRC16` vraća 16-bitni kontrolni zbroj CRC podataka u bajtovima, `CRC32` CRC-32 iz zlib, Etherneta i ZIP-a (Python `zlib.crc32`).

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

`variant` odabire parametre funkcije `CRC16`, bez obzira na velika i mala slova. Kontrolna vrijednost je CRC teksta `"123456789"`:

| `variant` | Kontrolna vrijednost | Poznato i kao |
|---|---|---|
| `"MODBUS"` (zadano) | `0x4B37` | okviri Modbus RTU |
| `"XMODEM"` | `0x31C3` | Python `binascii.crc_hqx(data, 0)` |
| `"CCITT-FALSE"` | `0x29B1` | `"IBM-3740"` se prihvaća kao ista varijanta |
| `"KERMIT"` | `0x2189` | |

Kontrolna vrijednost `CRC32` je `0xCBF43926` (3421780262).

**Vraća** — broj `uint`, ne bajtove. Da biste kontrolni zbroj stavili u okvir, zapakirajte ga funkcijom [PACKVALUE](https://taphome.com/hr/docs/script/binary-data/#packvalue) u redoslijedu bajtova koji protokol očekuje; Modbus RTU šalje prvo niži bajt.

**Primjer**

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

**Primjer — dodavanje kontrolnog zbroja Modbus RTU**

```taphome
# bajtovi okvira iz heksadecimalnog teksta
VAR frame := FROMHEX("01 03 00 0A 00 01");
# prazan međuspremnik od 2 bajta za kontrolni zbroj
VAR crc := BYTECOLLECTION(2);
# pakiranje CRC16 s nižim bajtom prvim
PACKVALUE(crc, 0, LittleEndianUint16, CRC16(frame));
# dodavanje kontrolnog zbroja okviru
APPEND(frame, crc);
# Result: frame is 01 03 00 0A 00 01 A4 08
```

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

**Dostupno** — TapHome Next 2026.1.40991+.

**Vidi također** — [Šifriranje i hashevi](https://taphome.com/hr/docs/script/encryption-and-hashes/), [Binarni podaci](https://taphome.com/hr/docs/script/binary-data/), [Pretvorbe tipova podataka](https://taphome.com/hr/docs/script/data-type-conversions/).
