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.
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. Samo sastavljaju vrijednosti, pa rade u svakoj skripti. Sve trebaju Core 2026.1 u TapHome Next, build 40991 ili noviji (još nije u službenom izdanju).
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.
| |
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 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
TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
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 — Core 2026.1 u TapHome Next, build 40991 ili noviji (još nije u službenom izdanju).
TOHEX, FROMHEX
TOHEX vraća podatke u bajtovima kao heksadecimalni tekst malim slovima, FROMHEX pretvara heksadecimalni tekst natrag u bajtove.
| |
Napomene
FROMHEXprihvaća znamenke velikim i malim slovima i razmake između njih, kaobytes.fromhexu Pythonu. Svaki drugi znak, uključujući prefiks0xili razdjelnike:, pogreška je, kao i neparan broj znamenki. Prazan niz daje praznu zbirku.- Za razliku od BYTECOLLECTION iz heksadecimalnog teksta, koji druge znakove tiho zanemaruje i ograničen je na 2048 bajtova,
FROMHEXnema ograničenje duljine, pa vraća natrag sve što jeTOHEXproizveo.
Primjer
TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
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 — Core 2026.1 u TapHome Next, build 40991 ili noviji (još nije u službenom izdanju).
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).
| |
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 u redoslijedu bajtova koji protokol očekuje; Modbus RTU šalje prvo niži bajt.
Primjer
TOSTRING(CRC16(FROMHEX("0103000A0001")), "X4");
# Result: "08A4"
TOSTRING(CRC32("123456789"), "X8");
# Result: "CBF43926"Primjer — dodavanje kontrolnog zbroja 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 08Pogreške — CRC16 Unknown variant. Valid values are ‘MODBUS’, ‘XMODEM’, ‘CCITT-FALSE’, ‘KERMIT’.
Dostupno — Core 2026.1 u TapHome Next, build 40991 ili noviji (još nije u službenom izdanju).
Vidi također — Šifriranje i hashevi, Binarni podaci, Pretvorbe tipova podataka.