---
title: "Byte-Kodierungen und Prüfsummen"
description: "Byte-Kodierungen im TapHome-Skript: Base64 und base64url von Binärdaten, Hexadezimaltext, CRC16 in den Varianten Modbus, XMODEM, CCITT-FALSE oder KERMIT und CRC32."
url: "https://taphome.com/de/docs/script/byte-encodings/"
language: de
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["byte-encodings","packet-parser","modbus","scripting-language"]
  questions: ["Wie dekodiere ich Base64-Binärdaten in einem TapHome-Skript?","Wie wandle ich Bytes in einem TapHome-Skript in Hexadezimaltext um?","Wie berechne ich in einem Skript eine CRC16 für Modbus RTU?","Welche Core-Version brauchen die Funktionen für Byte-Kodierungen?"]
---

# Byte-Kodierungen und Prüfsummen

Funktionen des TapHome-Skripts TOBASE64 und FROMBASE64 (auch base64url), TOHEX und FROMHEX, CRC16 und CRC32 — Bytes als Text und zurück und Prüfsummen von Frames.

Zuletzt aktualisiert: 2026-11-06

`TOBASE64`, `FROMBASE64`, `TOHEX`, `FROMHEX`, `CRC16` und `CRC32` wandeln Bytes in Text und zurück und berechnen Prüfsummen, meist zusammen mit den [Verschlüsselungs- und Hashfunktionen](https://taphome.com/de/docs/script/encryption-and-hashes/). Sie bauen nur Werte, deshalb funktionieren sie in jedem Skript. Alle brauchen TapHome Next 2026.1.40991+.

`TOBASE64`, `TOHEX`, `CRC16` und `CRC32` nehmen Bytedaten wie die Verschlüsselungsfunktionen an: eine `collection<uint8>`, einen Blob oder einen String, der als ISO-8859-1-Bytes verwendet wird (für UTF-8 übergeben Sie `TOBYTES(text, "utf-8")`). `TOBASE64` und `TOHEX` liefern einen String, `CRC16` und `CRC32` eine Zahl `uint`; `FROMBASE64` und `FROMHEX` nehmen Text an und liefern eine `collection<uint8>`.

## TOBASE64, FROMBASE64

`TOBASE64` wandelt Bytedaten in Base64-Text um, `FROMBASE64` wandelt Base64-Text zurück in Bytes.

```text
TOBASE64(data [, variant])
FROMBASE64(text [, variant])
```

`variant` ist `"standard"` (Standard) oder `"url"`, ohne Beachtung der Groß- und Kleinschreibung. `"url"` ist base64url (RFC 4648 §5), das `-` und `_` statt `+` und `/` verwendet. `TOBASE64` mit `"url"` lässt das Padding `=` weg, wie es JWT und die meisten Web-APIs erwarten (Python `base64.urlsafe_b64encode(data).rstrip(b"=")`); `FROMBASE64` mit `"url"` akzeptiert Text mit und ohne Padding.

**Rückgabewert** — `TOBASE64` einen String, `FROMBASE64` eine `collection<uint8>`.

**Hinweise** — [ENCODE und DECODE](https://taphome.com/de/docs/script/data-type-conversions/#encode) mit `"base64"` gehen über UTF-8-Text, daher überstehen Bytes über `0x7F` sie nicht. Verschlüsselte und andere Binärdaten gehen über `TOBASE64` und `FROMBASE64`.

**Beispiel**

```taphome
# Standard-Base64 von zwei Bytes
TOBASE64(FROMHEX("fbff"));
# Result: "+/8="
# base64url: ohne Padding, - und _ statt + und /
TOBASE64(FROMHEX("fbff"), "url");
# Result: "-_8"
# base64url zurück in Hex-Text dekodieren
TOHEX(FROMBASE64("-_8", "url"));
# Result: "fbff"
```

**Fehler** — *TOBASE64 Unknown variant. Valid values are 'standard', 'url'* (`FROMBASE64` nennt seinen eigenen Namen); *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.*

**Verfügbar** — TapHome Next 2026.1.40991+.

## TOHEX, FROMHEX

`TOHEX` liefert Bytedaten als Hexadezimaltext in Kleinbuchstaben, `FROMHEX` wandelt Hexadezimaltext zurück in Bytes.

```text
TOHEX(data)
FROMHEX(text)
```

**Hinweise**

- `FROMHEX` akzeptiert Ziffern in Groß- und Kleinbuchstaben und Leerzeichen dazwischen, wie `bytes.fromhex` in Python. Jedes andere Zeichen, auch ein Präfix `0x` oder Trennzeichen `:`, ist ein Fehler, ebenso eine ungerade Anzahl von Ziffern. Ein leerer String ergibt eine leere Sammlung.
- Anders als [BYTECOLLECTION](https://taphome.com/de/docs/script/text-string-and-byte-array/#bytecollection) aus Hexadezimaltext, das andere Zeichen stillschweigend ignoriert und auf 2048 Bytes begrenzt ist, hat `FROMHEX` keine Längenbegrenzung und nimmt daher alles zurück, was `TOHEX` erzeugt hat.

**Beispiel**

```taphome
# drei Bytes als Base64
TOBASE64(FROMHEX("ff0080"));
# Result: "/wCA"
# Base64 zurück in Bytes, dann Hex-Text
TOHEX(FROMBASE64("/wCA"));
# Result: "ff0080"
# Großbuchstaben und Leerzeichen sind erlaubt
TOHEX(FROMHEX("FF 00 80"));
# Result: "ff0080"
```

**Fehler** — *FROMHEX - invalid hex digit 'x'* (entfernen Sie ein Präfix oder Trennzeichen mit `REPLACE`); *FROMHEX - the number of hex digits must be even, it is N*; *FROMHEX - argument must be a string*.

**Verfügbar** — TapHome Next 2026.1.40991+.

## CRC16, CRC32

`CRC16` liefert die 16-Bit-CRC-Prüfsumme von Bytedaten, `CRC32` die CRC-32 von zlib, Ethernet und ZIP (Python `zlib.crc32`).

```text
CRC16(data [, variant])
CRC32(data)
```

`variant` wählt die Parameter von `CRC16`, ohne Beachtung der Groß- und Kleinschreibung. Der Prüfwert ist die CRC des Texts `"123456789"`:

| `variant` | Prüfwert | Auch bekannt als |
|---|---|---|
| `"MODBUS"` (Standard) | `0x4B37` | Modbus-RTU-Frames |
| `"XMODEM"` | `0x31C3` | Python `binascii.crc_hqx(data, 0)` |
| `"CCITT-FALSE"` | `0x29B1` | `"IBM-3740"` wird als dieselbe Variante akzeptiert |
| `"KERMIT"` | `0x2189` | |

Der Prüfwert von `CRC32` ist `0xCBF43926` (3421780262).

**Rückgabewert** — eine Zahl `uint`, keine Bytes. Um die Prüfsumme in einen Frame einzufügen, packen Sie sie mit [PACKVALUE](https://taphome.com/de/docs/script/binary-data/#packvalue) in der Bytereihenfolge, die das Protokoll erwartet; Modbus RTU sendet das niederwertige Byte zuerst.

**Beispiel**

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

**Beispiel — eine Modbus-RTU-Prüfsumme anhängen**

```taphome
# Frame-Bytes aus Hex-Text
VAR frame := FROMHEX("01 03 00 0A 00 01");
# leerer Puffer mit 2 Bytes für die Prüfsumme
VAR crc := BYTECOLLECTION(2);
# CRC16 mit dem niederwertigen Byte zuerst packen
PACKVALUE(crc, 0, LittleEndianUint16, CRC16(frame));
# Prüfsumme an den Frame anhängen
APPEND(frame, crc);
# Result: frame is 01 03 00 0A 00 01 A4 08
```

**Fehler** — *CRC16 Unknown variant. Valid values are 'MODBUS', 'XMODEM', 'CCITT-FALSE', 'KERMIT'*.

**Verfügbar** — TapHome Next 2026.1.40991+.

**Siehe auch** — [Verschlüsselung und Hashes](https://taphome.com/de/docs/script/encryption-and-hashes/), [Binärdaten](https://taphome.com/de/docs/script/binary-data/), [Konvertierung von Datentypen](https://taphome.com/de/docs/script/data-type-conversions/).
