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.
| |
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.
| |
Poznámky
FROMHEXprijíma číslice veľkými aj malými písmenami a medzery medzi nimi, akobytes.fromhexv Pythone. Každý iný znak vrátane predpony0xalebo 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á
FROMHEXobmedzenie dĺžky, takže prevedie späť všetko, čo vytvorilaTOHEX.
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).
| |
variant vyberá parametre funkcie CRC16, na veľkosti písmen nezáleží. Kontrolná hodnota je CRC textu "123456789":
variant | Kontrolná hodnota | Známy aj ako |
|---|---|---|
"MODBUS" (predvolený) | 0x4B37 | rámce Modbus RTU |
"XMODEM" | 0x31C3 | binascii.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 08Chyby — 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.