TapHome

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.

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

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.

1
2
TOHEX(data)
FROMHEX(text)

Napomene

  • FROMHEX prihvaća znamenke velikim i malim slovima i razmake između njih, kao bytes.fromhex u Pythonu. Svaki drugi znak, uključujući prefiks 0x ili 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, FROMHEX nema ograničenje duljine, pa vraća natrag sve što je TOHEX proizveo.

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).

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

variant odabire parametre funkcije CRC16, bez obzira na velika i mala slova. Kontrolna vrijednost je CRC teksta "123456789":

variantKontrolna vrijednostPoznato i kao
"MODBUS" (zadano)0x4B37okviri Modbus RTU
"XMODEM"0x31C3Python 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 08

Pogreš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.