TapHome

Kódovanie bajtov a kontrolné súčty

Funkcie skriptu TapHome TOBASE64 a FROMBASE64 (aj base64url), TOHEX a FROMHEX, CRC16 a CRC32 — bajty ako text a späť a kontrolné súčty rámcov.

TOBASE64, FROMBASE64, TOHEX, FROMHEX, CRC16 a CRC32 prevádzajú bajty na text a späť a počítajú kontrolné súčty, zvyčajne spolu so šifrovacími a hašovacími funkciami. Iba zostavujú hodnoty, takže fungujú v každom skripte. Všetky potrebujú Core 2026.1 v TapHome Next, build 40991 alebo novší (zatiaľ nie v oficiálnom vydaní).

TOBASE64, TOHEX, CRC16 a CRC32 prijímajú bajtové dáta rovnako ako šifrovacie funkcie: collection<uint8>, blob alebo reťazec, použitý ako bajty ISO-8859-1 (pre UTF-8 odovzdajte TOBYTES(text, "utf-8")). TOBASE64 a TOHEX vrátia reťazec, CRC16 a CRC32 číslo uint; FROMBASE64 a FROMHEX prijímajú text a vrátia collection<uint8>.

TOBASE64, FROMBASE64

TOBASE64 prevedie bajtové dáta na text Base64, FROMBASE64 prevedie text Base64 späť na bajty.

1
2
TOBASE64(data [, variant])
FROMBASE64(text [, variant])

variant je "standard" (predvolený) alebo "url", na veľkosti písmen nezáleží. "url" je base64url (RFC 4648 §5), ktorý namiesto + a / používa - a _. TOBASE64 s "url" vynechá doplnenie =, ako to očakáva JWT a väčšina webových API (v Pythone base64.urlsafe_b64encode(data).rstrip(b"=")); FROMBASE64 s "url" prijme text s doplnením aj bez neho.

Návratová hodnota — TOBASE64 reťazec, FROMBASE64 collection<uint8>.

Poznámky — ENCODE a DECODE s "base64" prechádzajú cez text v UTF-8, takže bajty nad 0x7F sa v nich pokazia. Zašifrované a iné binárne dáta prevádzajte cez TOBASE64 a FROMBASE64.

Príklad

TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
TOHEX(FROMBASE64("-_8", "url"));
# Result: "fbff"

Chyby — TOBASE64 Unknown variant. Valid values are ‘standard’, ‘url’ (FROMBASE64 uvádza svoj názov); 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.

Dostupnosť — Core 2026.1 v TapHome Next, build 40991 alebo novší (zatiaľ nie v oficiálnom vydaní).

TOHEX, FROMHEX

TOHEX vráti bajtové dáta ako hexadecimálny text malými písmenami, FROMHEX prevedie hexadecimálny text späť na bajty.

1
2
TOHEX(data)
FROMHEX(text)

Poznámky

  • FROMHEX prijíma číslice veľkými aj malými písmenami a medzery medzi nimi, ako bytes.fromhex v Pythone. Každý iný znak vrátane predpony 0x alebo oddeľovačov : je chyba, rovnako nepárny počet číslic. Prázdny reťazec dá prázdnu kolekciu.
  • Na rozdiel od BYTECOLLECTION z hexadecimálneho textu, ktorá iné znaky potichu ignoruje a má limit 2048 bajtov, nemá FROMHEX obmedzenie dĺžky, takže prevedie späť všetko, čo vytvorila TOHEX.

Príklad

TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
TOHEX(FROMHEX("FF 00 80"));
# Result: "ff0080"

Chyby — FROMHEX - invalid hex digit ‘x’ (predponu alebo oddeľovače odstráňte funkciou REPLACE); FROMHEX - the number of hex digits must be even, it is N; FROMHEX - argument must be a string.

Dostupnosť — Core 2026.1 v TapHome Next, build 40991 alebo novší (zatiaľ nie v oficiálnom vydaní).

CRC16, CRC32

CRC16 vráti 16-bitový kontrolný súčet CRC bajtových dát, CRC32 súčet CRC-32 podľa zlib, Ethernetu a ZIP (v Pythone zlib.crc32).

1
2
CRC16(data [, variant])
CRC32(data)

variant vyberá parametre funkcie CRC16, na veľkosti písmen nezáleží. Kontrolná hodnota je CRC textu "123456789":

variantKontrolná hodnotaZnámy aj ako
"MODBUS" (predvolený)0x4B37rámce Modbus RTU
"XMODEM"0x31C3binascii.crc_hqx(data, 0) v Pythone
"CCITT-FALSE"0x29B1"IBM-3740" sa prijíma ako ten istý variant
"KERMIT"0x2189

Kontrolná hodnota CRC32 je 0xCBF43926 (3421780262).

Návratová hodnota — číslo uint, nie bajty. Ak chcete kontrolný súčet vložiť do rámca, zabaľte ho funkciou PACKVALUE v poradí bajtov, ktoré protokol očakáva; Modbus RTU posiela nižší bajt ako prvý.

Príklad

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

Príklad — pripojenie kontrolného súčtu Modbus RTU

VAR frame := FROMHEX("01 03 00 0A 00 01");
VAR crc := BYTECOLLECTION(2);
PACKVALUE(crc, 0, LittleEndianUint16, CRC16(frame));
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’.

Dostupnosť — Core 2026.1 v TapHome Next, build 40991 alebo novší (zatiaľ nie v oficiálnom vydaní).

Pozrite aj — Šifrovanie a haše, Binárne dáta, Konverzie dátových typov.