ForHosting KIT · Entwickler-Tools

Zeilenweiser Array-Index, Offset und Byteadresse

In einem 3×4×5-Array mit 8-Byte-Elementen ist die Position 1, 2, 3 das Element 33: Byte-Offset 264 und Adresse 4360 ab der Basis 4096. Jeder Zwischenschritt wird gezeigt, damit Sie Zeigerarithmetik prüfen oder einen flachen Puffer untersuchen können. Kostenlos in Ihrem Browser.

  • Kostenlos
  • Läuft in Ihrem Browser
  • Ohne Anmeldung
  • Ihre Daten bleiben auf Ihrem Gerät
Nutzen Sie es über WebAPIE-MailTelegramApp bald
Wenn Sie eingeben
Dimensionen
3, 4, 5
Indizes
1, 2, 3
Elementgröße (Bytes)
8
Basisadresse
4.096
Erhalten Sie
Ordnung
row-major
Schrittweiten (Strides)
20, 5, 1
Beiträge
20, 10, 3
Linearer Index
33

Dieser Rechner wandelt Koordinaten eines mehrdimensionalen Arrays in die eindeutige lineare Position einer zusammenhängenden, zeilenweisen C-Speicherordnung um. Geben Sie die Dimensionen von der äußersten bis zur innersten Achse, den passenden nullbasierten Index jeder Achse, die Elementgröße in Byte und optional eine Basisadresse ein. Das Ergebnis zeigt die Schrittweite jeder Achse, jeden Indexbeitrag, den Element- und Byte-Offset sowie die endgültige Byteadresse und eignet sich zur Kontrolle von Zeigerarithmetik und abgeflachten Puffern.

Dimensionen und Indizes in gleicher Achsenfolge eingeben

Führen Sie die Dimensionsgrößen von der äußersten bis zur innersten Achse auf, genau wie in der Deklaration oder Array-Form. Für ein Array aus 3 Ebenen, 4 Zeilen und 5 Spalten geben Sie 3, 4 und 5 ein. Danach folgt für jede Dimension ein nullbasierter Index in derselben Reihenfolge.

Die Koordinate der zweiten Ebene, dritten Zeile und vierten Spalte lautet somit 1, 2 und 3. Dimensionsgrößen müssen positive Ganzzahlen sein; jeder Index muss mindestens null und kleiner als die zugehörige Dimension sein. Der Rechner weist abweichende Ränge und Koordinaten außerhalb der Grenzen zurück, anstatt unbemerkt eine Adresse außerhalb des Arrays zu erzeugen.

Auch die Elementgröße ist erforderlich, weil ein Elementindex allein noch keine Byteposition bestimmt. Verwenden Sie die tatsächliche Speicherbreite, etwa vier Byte für eine übliche 32-Bit-Ganzzahl oder acht Byte für einen double-Wert. Wenn Ihnen der Array-Anfang bekannt ist, tragen Sie diese nicht negative Basisadresse ein.

Andernfalls belassen Sie null und verstehen das Ergebnis als relativen Offset vom Anfang.

Die zeilenweise Schrittweitenberechnung nachvollziehen

Bei zeilenweiser Ordnung liegt die letzte Achse zusammenhängend im Speicher. Ein Schritt auf dieser Achse bewegt sich daher genau um ein Element, sodass ihre Schrittweite eins beträgt. Die Schrittweite jeder früheren Achse ist das Produkt aller rechts davon stehenden Dimensionen.

Bei 3 mal 4 mal 5 lauten die Schrittweiten 20, 5 und 1: Eine Ebene überspringt vier Zeilen mit je fünf Elementen, eine Zeile überspringt fünf Elemente und eine Spalte genau eines. Das Werkzeug multipliziert jeden Index mit der Schrittweite seiner Achse und gibt diese Produkte als Beiträge aus. Ihre Summe ergibt den nullbasierten linearen Index.

Für 1, 2 und 3 lautet die Rechnung 1 mal 20 plus 2 mal 5 plus 3 mal 1 und ergibt 33. Die Zwischenwerte machen das Ergebnis prüfbar und decken häufige Fehler wie umgekehrte Dimensionen oder spaltenweise Multiplikatoren auf. Sämtliche Operationen verwenden geprüfte Ganzzahlen.

Überschreitet ein Produkt oder eine Summe den sicheren JavaScript-Ganzzahlbereich, folgt ein Eingabefehler statt einer gerundeten Adresse.

Den Elementindex in eine Byteadresse umrechnen

Ein linearer Index zählt Elemente und keine Bytes. Für den Byte-Offset multiplizieren Sie ihn mit der Elementgröße. Das Element mit Index 33 beginnt bei acht Byte großen Elementen 264 Byte nach dem Array-Anfang.

Die Endadresse entsteht durch Addition dieses Offsets zur angegebenen Basisadresse: Bei der Basis 4096 beginnt das Element an Adresse 4360. Die Antwort hält linearen Index, Byte-Offset, Basis- und Endadresse getrennt, damit Sie jede Stufe mit Quellcode, Debugger, Binärformatspezifikation oder einer GPU-Pufferberechnung vergleichen können. Die Adresse wird als exakte Dezimalzahl innerhalb des sicheren Ganzzahlbereichs ausgegeben; der Rechner greift weder auf Speicher zu noch untersucht er einen laufenden Prozess.

Vorausgesetzt wird ein dichtes, zusammenhängendes Array ohne Zwischenraum zwischen Elementen oder Zeilen. Zeilen mit Pitch, explizite führende Dimensionen, Teilansichten oder benutzerdefinierte Schrittweiten benötigen ihre tatsächlichen physischen Werte.

Zeigerarithmetik kontrollieren

Prüfen Sie Element- und Byte-Offsets in C, C++, Rust oder WebAssembly, bevor Sie auf einen abgeflachten Puffer zugreifen.

Tensor-Abflachung debuggen

Vergleichen Sie erwartete zeilenweise Schrittweiten und Beiträge mit einer Tensorbibliothek, einem Serialisierer oder Datenaustauschcode.

Speicheranordnung vermitteln

Zeigen Sie, wie jede mehrdimensionale Koordinate zu einer zusammenhängenden Position und ihrer Endadresse beiträgt.

Sind die Indizes nullbasiert?

Ja. Jeder Index beginnt bei null und muss kleiner als die Größe seiner Dimension sein.

Was bedeutet zeilenweise Ordnung?

Dabei ändert sich die letzte Array-Achse im zusammenhängenden Speicher am schnellsten, wie bei üblichen mehrdimensionalen C-Arrays.

Welche Basisadresse soll ich verwenden?

Verwenden Sie die Byteadresse des Array-Anfangs. Lassen Sie null stehen, wenn Sie nur einen relativen Offset benötigen.

Werden spaltenweise Arrays unterstützt?

Nein. Die Berechnung setzt bewusst zeilenweise Ordnung um; spaltenweise Speicherung verwendet eine andere Folge von Schrittweiten.

Werden Zeilenabstand oder eigene Schrittweiten berücksichtigt?

Nein. Vorausgesetzt werden dichte, zusammenhängende Elemente. Pitch, Padding, Transpositionen oder Ausschnitte erfordern reale physische Schrittweiten.

Beginnen die Indizes bei null?

Ja. Jede Achse zählt ab null, und jeder Index muss kleiner als die zugehörige Größe sein. Die zweite Ebene, dritte Zeile und vierte Spalte eines 3×4×5-Arrays sind also 1, 2 und 3.

Welche Basisadresse soll ich angeben?

Die Adresse, an der das Array im Speicher beginnt, falls Sie sie kennen. Ohne Angabe gilt null, und das Ergebnis ist dann der Abstand vom Anfang des Arrays, im Beispiel 264 Bytes.

Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.

POSThttps://api.kit.forhosting.com/dev/array-rowmajor-index

Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.

curl -X POST https://api.kit.forhosting.com/dev/array-rowmajor-index \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dimensions":[3,4,5],"indices":[1,2,3],"element_size_bytes":8}'
{
  "dimensions": [
    3,
    4,
    5
  ],
  "indices": [
    1,
    2,
    3
  ],
  "element_size_bytes": 8
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.array_rowmajor_index",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.

pro Anfrage$0.002

Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.

max_dimensions32
HTTPCodeBedeutung
401unauthorizedDer API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer).
402insufficient_balanceIhr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht.
404unknown_typeUnbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog.
429rate_limitedZu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt.

Den Elementindex in eine Byteadresse umrechnen

Jede API-Anfrage kostet $0.002; für schnelle Prüfungen läuft dieselbe deterministische Berechnung im Browser.

Was kostet die Nutzung über die API?

Jede Anfrage kostet $0.002. Die Browserversion führt dieselbe deterministische Berechnung lokal aus.

Vollständige KIT-Dokumentation lesen →