Codificări de octeți și sume de control
Funcții de script TapHome TOBASE64 și FROMBASE64 (și base64url), TOHEX și FROMHEX, CRC16 și CRC32 — octeți ca text și înapoi și sume de control ale cadrelor.
Ultima actualizare:
TOBASE64, FROMBASE64, TOHEX, FROMHEX, CRC16 și CRC32 transformă octeții în text și înapoi și calculează sume de control, de obicei împreună cu funcțiile de criptare și hash. Ele doar construiesc valori, așa că funcționează în orice script. Toate necesită TapHome Next 2026.1.40991+.
TOBASE64, TOHEX, CRC16 și CRC32 primesc date de octeți ca funcțiile de criptare: o collection<uint8>, un blob sau un șir, folosit ca octeți ISO-8859-1 (pentru UTF-8 transmiteți TOBYTES(text, "utf-8")). TOBASE64 și TOHEX returnează un șir, CRC16 și CRC32 un număr uint; FROMBASE64 și FROMHEX primesc text și returnează o collection<uint8>.
TOBASE64, FROMBASE64
TOBASE64 transformă date de octeți în text Base64, FROMBASE64 transformă textul Base64 înapoi în octeți.
| |
variant este "standard" (implicit) sau "url", fără deosebire între majuscule și minuscule. "url" este base64url (RFC 4648 §5), care folosește - și _ în loc de + și /. TOBASE64 cu "url" omite completarea =, așa cum așteaptă JWT și majoritatea API-urilor web (Python base64.urlsafe_b64encode(data).rstrip(b"=")); FROMBASE64 cu "url" acceptă text cu sau fără completare.
Returnează — TOBASE64 un șir, FROMBASE64 o collection<uint8>.
Observații — ENCODE și DECODE cu "base64" trec prin text UTF-8, așa că octeții peste 0x7F nu rămân intacți. Datele criptate și alte date binare trec prin TOBASE64 și FROMBASE64.
Exemplu
# Base64 standard pentru doi octeți
TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
# base64url: fără completare, - și _ în loc de + și /
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
# decodarea base64url înapoi în text hex
TOHEX(FROMBASE64("-_8", "url"));
# Result: "fbff"Erori — TOBASE64 Unknown variant. Valid values are ‘standard’, ‘url’ (FROMBASE64 își scrie propriul nume); 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.
Disponibilitate — TapHome Next 2026.1.40991+.
TOHEX, FROMHEX
TOHEX returnează date de octeți ca text hexazecimal cu litere mici, FROMHEX transformă textul hexazecimal înapoi în octeți.
| |
Observații
FROMHEXacceptă cifre cu majuscule și minuscule și spații între ele, cabytes.fromhexdin Python. Orice alt caracter, inclusiv un prefix0xsau separatori:, este o eroare, la fel ca un număr impar de cifre. Un șir gol dă o colecție goală.- Spre deosebire de BYTECOLLECTION din text hexazecimal, care ignoră în tăcere celelalte caractere și este limitată la 2048 de octeți,
FROMHEXnu are limită de lungime, așa că transformă înapoi tot ce a produsTOHEX.
Exemplu
# trei octeți ca Base64
TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
# Base64 înapoi în octeți, apoi text hex
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
# literele mari și spațiile sunt acceptate
TOHEX(FROMHEX("FF 00 80"));
# Result: "ff0080"Erori — FROMHEX - invalid hex digit ‘x’ (eliminați un prefix sau separatorii cu REPLACE); FROMHEX - the number of hex digits must be even, it is N; FROMHEX - argument must be a string.
Disponibilitate — TapHome Next 2026.1.40991+.
CRC16, CRC32
CRC16 returnează suma de control CRC pe 16 biți a datelor de octeți, CRC32 suma CRC-32 din zlib, Ethernet și ZIP (Python zlib.crc32).
| |
variant alege parametrii funcției CRC16, fără deosebire între majuscule și minuscule. Valoarea de verificare este CRC-ul textului "123456789":
variant | Valoare de verificare | Cunoscut și ca |
|---|---|---|
"MODBUS" (implicit) | 0x4B37 | cadre Modbus RTU |
"XMODEM" | 0x31C3 | Python binascii.crc_hqx(data, 0) |
"CCITT-FALSE" | 0x29B1 | "IBM-3740" este acceptat ca aceeași variantă |
"KERMIT" | 0x2189 |
Valoarea de verificare a CRC32 este 0xCBF43926 (3421780262).
Returnează — un număr uint, nu octeți. Pentru a pune suma de control într-un cadru, împachetați-o cu PACKVALUE în ordinea octeților pe care o așteaptă protocolul; Modbus RTU trimite mai întâi octetul inferior.
Exemplu
TOSTRING(CRC16(FROMHEX("0103000A0001")), "X4");
# Result: "08A4"
TOSTRING(CRC32("123456789"), "X8");
# Result: "CBF43926"Exemplu — adăugarea unei sume de control Modbus RTU
# octeții cadrului din text hex
VAR frame := FROMHEX("01 03 00 0A 00 01");
# buffer gol de 2 octeți pentru suma de control
VAR crc := BYTECOLLECTION(2);
# împachetarea CRC16 cu octetul inferior primul
PACKVALUE(crc, 0, LittleEndianUint16, CRC16(frame));
# adăugarea sumei de control la cadru
APPEND(frame, crc);
# Result: frame is 01 03 00 0A 00 01 A4 08Erori — CRC16 Unknown variant. Valid values are ‘MODBUS’, ‘XMODEM’, ‘CCITT-FALSE’, ‘KERMIT’.
Disponibilitate — TapHome Next 2026.1.40991+.
Consultați și — Criptare și hash-uri, Date binare, Conversii de tipuri de date.