---
title: "Kódování bajtů a kontrolní součty"
description: "Kódování bajtů ve skriptu TapHome: Base64 a base64url binárních dat, šestnáctkový text, CRC16 ve variantě Modbus, XMODEM, CCITT-FALSE nebo KERMIT a CRC32."
url: "https://taphome.com/cs/docs/script/byte-encodings/"
language: cs
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["byte-encodings","packet-parser","modbus","scripting-language"]
  questions: ["Jak ve skriptu TapHome dekódovat binární data v Base64?","Jak ve skriptu TapHome převést bajty na šestnáctkový text?","Jak ve skriptu spočítat CRC16 pro Modbus RTU?","Jakou verzi Core potřebují funkce kódování bajtů?"]
---

# Kódování bajtů a kontrolní součty

Funkce skriptu TapHome TOBASE64 a FROMBASE64 (i base64url), TOHEX a FROMHEX, CRC16 a CRC32 — bajty jako text a zpět a kontrolní součty rámců.

Poslední aktualizace: 2026-11-06

`TOBASE64`, `FROMBASE64`, `TOHEX`, `FROMHEX`, `CRC16` a `CRC32` převádějí bajty na text a zpět a počítají kontrolní součty, obvykle spolu se [šifrovacími a hašovacími funkcemi](https://taphome.com/cs/docs/script/encryption-and-hashes/). Pouze sestavují hodnoty, takže fungují v každém skriptu. Všechny potřebují TapHome Next 2026.1.40991+.

`TOBASE64`, `TOHEX`, `CRC16` a `CRC32` přijímají bajtová data stejně jako šifrovací funkce: `collection<uint8>`, blob nebo řetězec, použitý jako bajty ISO-8859-1 (pro UTF-8 předejte `TOBYTES(text, "utf-8")`). `TOBASE64` a `TOHEX` vrátí řetězec, `CRC16` a `CRC32` číslo `uint`; `FROMBASE64` a `FROMHEX` přijímají text a vrátí `collection<uint8>`.

## TOBASE64, FROMBASE64

`TOBASE64` převede bajtová data na text Base64, `FROMBASE64` převede text Base64 zpět na bajty.

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

`variant` je `"standard"` (výchozí) nebo `"url"`, na velikosti písmen nezáleží. `"url"` je base64url (RFC 4648 §5), který místo `+` a `/` používá `-` a `_`. `TOBASE64` s `"url"` vynechá doplnění `=`, jak to očekává JWT a většina webových API (v Pythonu `base64.urlsafe_b64encode(data).rstrip(b"=")`); `FROMBASE64` s `"url"` přijme text s doplněním i bez něj.

**Vrací** — `TOBASE64` řetězec, `FROMBASE64` `collection<uint8>`.

**Poznámky** — [ENCODE a DECODE](https://taphome.com/cs/docs/script/data-type-conversions/#encode) s `"base64"` procházejí přes text v UTF-8, takže bajty nad `0x7F` se v nich poškodí. Zašifrovaná a jiná binární data převádějte přes `TOBASE64` a `FROMBASE64`.

**Příklad**

```taphome
# standardní Base64 dvou bajtů
TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
# base64url: bez výplně, - a _ místo + a /
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
# dekódování base64url zpět na hex text
TOHEX(FROMBASE64("-_8", "url"));
# Result: "fbff"
```

**Chyby** — *TOBASE64 Unknown variant. Valid values are 'standard', 'url'* (`FROMBASE64` uvádí svůj název); *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.*

**Dostupnost** — TapHome Next 2026.1.40991+.

## TOHEX, FROMHEX

`TOHEX` vrátí bajtová data jako šestnáctkový text malými písmeny, `FROMHEX` převede šestnáctkový text zpět na bajty.

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

**Poznámky**

- `FROMHEX` přijímá číslice velkými i malými písmeny a mezery mezi nimi, jako `bytes.fromhex` v Pythonu. Každý jiný znak včetně předpony `0x` nebo oddělovačů `:` je chyba, stejně jako lichý počet číslic. Prázdný řetězec dá prázdnou kolekci.
- Na rozdíl od [BYTECOLLECTION](https://taphome.com/cs/docs/script/text-string-and-byte-array/#bytecollection) ze šestnáctkového textu, která jiné znaky potichu ignoruje a má limit 2048 bajtů, nemá `FROMHEX` omezení délky, takže převede zpět všechno, co vytvořila `TOHEX`.

**Příklad**

```taphome
# tři bajty jako Base64
TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
# Base64 zpět na bajty, pak hex text
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
# velká písmena a mezery jsou povoleny
TOHEX(FROMHEX("FF 00 80"));
# Result: "ff0080"
```

**Chyby** — *FROMHEX - invalid hex digit 'x'* (předponu nebo oddělovače odstraňte funkcí `REPLACE`); *FROMHEX - the number of hex digits must be even, it is N*; *FROMHEX - argument must be a string*.

**Dostupnost** — TapHome Next 2026.1.40991+.

## CRC16, CRC32

`CRC16` vrátí 16bitový kontrolní součet CRC bajtových dat, `CRC32` součet CRC-32 podle zlib, Ethernetu a ZIP (v Pythonu `zlib.crc32`).

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

`variant` vybírá parametry funkce `CRC16`, na velikosti písmen nezáleží. Kontrolní hodnota je CRC textu `"123456789"`:

| `variant` | Kontrolní hodnota | Známý také jako |
|---|---|---|
| `"MODBUS"` (výchozí) | `0x4B37` | rámce Modbus RTU |
| `"XMODEM"` | `0x31C3` | `binascii.crc_hqx(data, 0)` v Pythonu |
| `"CCITT-FALSE"` | `0x29B1` | `"IBM-3740"` se přijímá jako stejná varianta |
| `"KERMIT"` | `0x2189` | |

Kontrolní hodnota `CRC32` je `0xCBF43926` (3421780262).

**Vrací** — číslo `uint`, ne bajty. Chcete-li kontrolní součet vložit do rámce, zabalte ho funkcí [PACKVALUE](https://taphome.com/cs/docs/script/binary-data/#packvalue) v pořadí bajtů, které protokol očekává; Modbus RTU posílá nižší bajt jako první.

**Příklad**

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

**Příklad — připojení kontrolního součtu Modbus RTU**

```taphome
# bajty rámce z hex textu
VAR frame := FROMHEX("01 03 00 0A 00 01");
# prázdný buffer o 2 bajtech pro kontrolní součet
VAR crc := BYTECOLLECTION(2);
# zabalení CRC16 s nižším bajtem jako prvním
PACKVALUE(crc, 0, LittleEndianUint16, CRC16(frame));
# připojení kontrolního součtu k rámci
APPEND(frame, crc);
# Result: frame is 01 03 00 0A 00 01 A4 08
```

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

**Dostupnost** — TapHome Next 2026.1.40991+.

**Viz také** — [Šifrování a haše](https://taphome.com/cs/docs/script/encryption-and-hashes/), [Binární data](https://taphome.com/cs/docs/script/binary-data/), [Převody datových typů](https://taphome.com/cs/docs/script/data-type-conversions/).
