TapHome

Bájtkódolások és ellenőrzőösszegek

TapHome szkriptfüggvények: TOBASE64 és FROMBASE64 (base64url is), TOHEX és FROMHEX, CRC16 és CRC32 — bájtok szövegként és vissza, valamint keretek ellenőrzőösszegei.

A TOBASE64, FROMBASE64, TOHEX, FROMHEX, CRC16 és CRC32 bájtokat alakít szöveggé és vissza, és ellenőrzőösszegeket számol, többnyire a titkosító és hash-függvényekkel együtt. Csak értékeket állítanak elő, ezért minden szkriptben működnek. Mindegyikhez Core 2026.1 a TapHome Next csatornán, build 40991 vagy újabb (még nem része a hivatalos kiadásnak) szükséges.

A TOBASE64, TOHEX, CRC16 és CRC32 a titkosító függvényekhez hasonlóan bájtadatokat fogad: collection<uint8> gyűjteményt, blobot vagy szöveget, amely ISO-8859-1 bájtokként kerül felhasználásra (UTF-8-hoz add át a TOBYTES(text, "utf-8") értéket). A TOBASE64 és a TOHEX szöveget ad vissza, a CRC16 és a CRC32 uint számot; a FROMBASE64 és a FROMHEX szöveget fogad, és collection<uint8> gyűjteményt ad vissza.

TOBASE64, FROMBASE64

A TOBASE64 bájtadatokat alakít Base64 szöveggé, a FROMBASE64 a Base64 szöveget alakítja vissza bájtokká.

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

A variant értéke "standard" (alapértelmezett) vagy "url", a kis- és nagybetű nem számít. Az "url" a base64url (RFC 4648 §5), amely + és / helyett - és _ jelet használ. A TOBASE64 "url" esetén elhagyja a = kitöltést, ahogy a JWT és a legtöbb webes API elvárja (Python base64.urlsafe_b64encode(data).rstrip(b"=")); a FROMBASE64 "url" esetén kitöltéssel és anélkül is elfogadja a szöveget.

Visszatérési érték — a TOBASE64 szöveget, a FROMBASE64 collection<uint8> gyűjteményt.

Megjegyzések — Az ENCODE és a DECODE "base64" esetén UTF-8 szövegen keresztül dolgozik, így a 0x7F feletti bájtok nem maradnak épen. A titkosított és más bináris adatok a TOBASE64 és a FROMBASE64 függvényen keresztül menjenek.

Példa

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

Hibák — TOBASE64 Unknown variant. Valid values are ‘standard’, ‘url’ (a FROMBASE64 a saját nevét írja); 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.

Elérhetőség — Core 2026.1 a TapHome Next csatornán, build 40991 vagy újabb (még nem része a hivatalos kiadásnak).

TOHEX, FROMHEX

A TOHEX a bájtadatokat kisbetűs hexadecimális szövegként adja vissza, a FROMHEX a hexadecimális szöveget alakítja vissza bájtokká.

1
2
TOHEX(data)
FROMHEX(text)

Megjegyzések

  • A FROMHEX elfogadja a kis- és nagybetűs számjegyeket és a köztük lévő szóközöket, mint a Python bytes.fromhex függvénye. Minden más karakter, a 0x előtagot és a : elválasztókat is beleértve, hiba, és az is, ha a számjegyek száma páratlan. Az üres szöveg üres gyűjteményt ad.
  • A hexadecimális szövegből dolgozó BYTECOLLECTION függvénnyel ellentétben, amely a többi karaktert csendben figyelmen kívül hagyja, és 2048 bájtra korlátozott, a FROMHEX hosszát semmi nem korlátozza, így mindent visszaalakít, amit a TOHEX előállított.

Példa

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

Hibák — FROMHEX - invalid hex digit ‘x’ (az előtagot vagy az elválasztókat a REPLACE függvénnyel távolítsd el); FROMHEX - the number of hex digits must be even, it is N; FROMHEX - argument must be a string.

Elérhetőség — Core 2026.1 a TapHome Next csatornán, build 40991 vagy újabb (még nem része a hivatalos kiadásnak).

CRC16, CRC32

A CRC16 a bájtadatok 16 bites CRC ellenőrzőösszegét adja vissza, a CRC32 a zlib, az Ethernet és a ZIP CRC-32 összegét (Python zlib.crc32).

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

A variant a CRC16 paramétereit választja ki, a kis- és nagybetű nem számít. Az ellenőrző érték a "123456789" szöveg CRC-je:

variantEllenőrző értékMás néven
"MODBUS" (alapértelmezett)0x4B37Modbus RTU keretek
"XMODEM"0x31C3Python binascii.crc_hqx(data, 0)
"CCITT-FALSE"0x29B1az "IBM-3740" ugyanennek a változatnak számít
"KERMIT"0x2189

A CRC32 ellenőrző értéke 0xCBF43926 (3421780262).

Visszatérési érték — uint szám, nem bájtok. Ha az ellenőrzőösszeget egy keretbe akarod tenni, csomagold a PACKVALUE függvénnyel a protokoll által várt bájtsorrendben; a Modbus RTU az alsó bájtot küldi elsőként.

Példa

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

Példa — Modbus RTU ellenőrzőösszeg hozzáfűzése

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

Hibák — CRC16 Unknown variant. Valid values are ‘MODBUS’, ‘XMODEM’, ‘CCITT-FALSE’, ‘KERMIT’.

Elérhetőség — Core 2026.1 a TapHome Next csatornán, build 40991 vagy újabb (még nem része a hivatalos kiadásnak).

Lásd még — Titkosítás és hash-ek, Bináris adatok, Adattípus-konverziók.