---
title: "Kodowanie bajtów i sumy kontrolne"
description: "Kodowanie bajtów w skrypcie TapHome: Base64 i base64url danych binarnych, tekst szesnastkowy, CRC16 w wariancie Modbus, XMODEM, CCITT-FALSE lub KERMIT oraz CRC32."
url: "https://taphome.com/pl/docs/script/byte-encodings/"
language: pl
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["byte-encodings","packet-parser","modbus","scripting-language"]
  questions: ["Jak zdekodować binarne dane Base64 w skrypcie TapHome?","Jak zamienić bajty na tekst szesnastkowy w skrypcie TapHome?","Jak obliczyć w skrypcie CRC16 dla Modbus RTU?","Jakiej wersji Core wymagają funkcje kodowania bajtów?"]
---

# Kodowanie bajtów i sumy kontrolne

Funkcje skryptu TapHome TOBASE64 i FROMBASE64 (także base64url), TOHEX i FROMHEX, CRC16 i CRC32 — bajty jako tekst i z powrotem oraz sumy kontrolne ramek.

Ostatnia aktualizacja: 2026-11-06

`TOBASE64`, `FROMBASE64`, `TOHEX`, `FROMHEX`, `CRC16` i `CRC32` zamieniają bajty na tekst i z powrotem oraz liczą sumy kontrolne, zwykle razem z [funkcjami szyfrowania i skrótów](https://taphome.com/pl/docs/script/encryption-and-hashes/). Tylko budują wartości, więc działają w każdym skrypcie. Wszystkie wymagają TapHome Next 2026.1.40991+.

`TOBASE64`, `TOHEX`, `CRC16` i `CRC32` przyjmują dane bajtowe tak jak funkcje szyfrowania: `collection<uint8>`, blob lub tekst, używany jako bajty ISO-8859-1 (dla UTF-8 przekaż `TOBYTES(text, "utf-8")`). `TOBASE64` i `TOHEX` zwracają tekst, `CRC16` i `CRC32` liczbę `uint`; `FROMBASE64` i `FROMHEX` przyjmują tekst i zwracają `collection<uint8>`.

## TOBASE64, FROMBASE64

`TOBASE64` zamienia dane bajtowe na tekst Base64, `FROMBASE64` zamienia tekst Base64 z powrotem na bajty.

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

`variant` to `"standard"` (domyślny) lub `"url"`, bez rozróżniania wielkości liter. `"url"` to base64url (RFC 4648 §5), który zamiast `+` i `/` używa `-` i `_`. `TOBASE64` z `"url"` pomija dopełnienie `=`, czego oczekuje JWT i większość webowych API (Python `base64.urlsafe_b64encode(data).rstrip(b"=")`); `FROMBASE64` z `"url"` przyjmuje tekst z dopełnieniem i bez niego.

**Zwraca** — `TOBASE64` tekst, `FROMBASE64` `collection<uint8>`.

**Uwagi** — [ENCODE i DECODE](https://taphome.com/pl/docs/script/data-type-conversions/#encode) z `"base64"` przechodzą przez tekst UTF-8, więc bajty powyżej `0x7F` nie są w nich zachowane. Zaszyfrowane i inne dane binarne przekazuj przez `TOBASE64` i `FROMBASE64`.

**Przykład**

```taphome
# standardowe Base64 dwóch bajtów
TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
# base64url: bez dopełnienia, - i _ zamiast + i /
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
# dekodowanie base64url z powrotem na tekst hex
TOHEX(FROMBASE64("-_8", "url"));
# Result: "fbff"
```

**Błędy** — *TOBASE64 Unknown variant. Valid values are 'standard', 'url'* (`FROMBASE64` podaje swoją nazwę); *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.*

**Dostępność** — TapHome Next 2026.1.40991+.

## TOHEX, FROMHEX

`TOHEX` zwraca dane bajtowe jako tekst szesnastkowy małymi literami, `FROMHEX` zamienia tekst szesnastkowy z powrotem na bajty.

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

**Uwagi**

- `FROMHEX` przyjmuje cyfry wielkimi i małymi literami oraz spacje między nimi, tak jak `bytes.fromhex` w Pythonie. Każdy inny znak, w tym prefiks `0x` lub separatory `:`, jest błędem, podobnie jak nieparzysta liczba cyfr. Pusty tekst daje pustą kolekcję.
- W przeciwieństwie do funkcji [BYTECOLLECTION](https://taphome.com/pl/docs/script/text-string-and-byte-array/#bytecollection) z tekstu szesnastkowego, która po cichu ignoruje inne znaki i jest ograniczona do 2048 bajtów, `FROMHEX` nie ma limitu długości, więc zamienia z powrotem wszystko, co wytworzyło `TOHEX`.

**Przykład**

```taphome
# trzy bajty jako Base64
TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
# Base64 z powrotem na bajty, potem tekst hex
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
# wielkie litery i spacje są dozwolone
TOHEX(FROMHEX("FF 00 80"));
# Result: "ff0080"
```

**Błędy** — *FROMHEX - invalid hex digit 'x'* (usuń prefiks lub separatory funkcją `REPLACE`); *FROMHEX - the number of hex digits must be even, it is N*; *FROMHEX - argument must be a string*.

**Dostępność** — TapHome Next 2026.1.40991+.

## CRC16, CRC32

`CRC16` zwraca 16-bitową sumę kontrolną CRC danych bajtowych, `CRC32` sumę CRC-32 z zlib, Ethernetu i ZIP (Python `zlib.crc32`).

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

`variant` wybiera parametry `CRC16`, bez rozróżniania wielkości liter. Wartość kontrolna to CRC tekstu `"123456789"`:

| `variant` | Wartość kontrolna | Znany też jako |
|---|---|---|
| `"MODBUS"` (domyślny) | `0x4B37` | ramki Modbus RTU |
| `"XMODEM"` | `0x31C3` | Python `binascii.crc_hqx(data, 0)` |
| `"CCITT-FALSE"` | `0x29B1` | `"IBM-3740"` jest akceptowany jako ten sam wariant |
| `"KERMIT"` | `0x2189` | |

Wartość kontrolna `CRC32` to `0xCBF43926` (3421780262).

**Zwraca** — liczbę `uint`, nie bajty. Aby umieścić sumę kontrolną w ramce, spakuj ją funkcją [PACKVALUE](https://taphome.com/pl/docs/script/binary-data/#packvalue) w kolejności bajtów, której oczekuje protokół; Modbus RTU wysyła najpierw młodszy bajt.

**Przykład**

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

**Przykład — dołączenie sumy kontrolnej Modbus RTU**

```taphome
# bajty ramki z tekstu hex
VAR frame := FROMHEX("01 03 00 0A 00 01");
# pusty bufor 2 bajtów na sumę kontrolną
VAR crc := BYTECOLLECTION(2);
# spakowanie CRC16 z młodszym bajtem pierwszym
PACKVALUE(crc, 0, LittleEndianUint16, CRC16(frame));
# dołączenie sumy kontrolnej do ramki
APPEND(frame, crc);
# Result: frame is 01 03 00 0A 00 01 A4 08
```

**Błędy** — *CRC16 Unknown variant. Valid values are 'MODBUS', 'XMODEM', 'CCITT-FALSE', 'KERMIT'*.

**Dostępność** — TapHome Next 2026.1.40991+.

**Zobacz też** — [Szyfrowanie i skróty](https://taphome.com/pl/docs/script/encryption-and-hashes/), [Dane binarne](https://taphome.com/pl/docs/script/binary-data/), [Konwersje typów danych](https://taphome.com/pl/docs/script/data-type-conversions/).
