ForHosting KIT · Utilidades de desarrollo

Índice de array por filas: desplazamiento y dirección

En un array de 3×4×5 con elementos de 8 bytes, la posición 1, 2, 3 es el elemento 33: desplazamiento de 264 bytes y dirección 4360 desde la base 4096. Verá cada paso intermedio para revisar aritmética de punteros o depurar un búfer aplanado. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Dimensiones
3, 4, 5
Índices
1, 2, 3
Tamaño del elemento (bytes)
8
Dirección base
4 096
Obtiene
Orden
row-major
Pasos (strides)
20, 5, 1
Aportes
20, 10, 3
Índice lineal
33

Esta calculadora convierte las coordenadas de un array multidimensional en la posición lineal única que utiliza una disposición contigua por filas al estilo C. Introduzca las dimensiones desde la más externa hasta la más interna, el índice de base cero correspondiente a cada eje, el tamaño de cada elemento en bytes y, si lo conoce, una dirección base. El resultado detalla los pasos, la aportación de cada índice, el desplazamiento del elemento y la dirección final en bytes.

Introduzca dimensiones e índices en el mismo orden de ejes

Enumere los tamaños desde el eje más externo hasta el más interno, tal como aparecen en la declaración o forma del array. Para un array de 3 planos, 4 filas y 5 columnas, introduzca 3, 4 y 5. Después indique un índice de base cero por dimensión en ese mismo orden.

La coordenada del segundo plano, la tercera fila y la cuarta columna es 1, 2 y 3. Cada dimensión debe ser un entero positivo; cada índice debe ser igual o mayor que cero y menor que su dimensión. La calculadora rechaza rangos distintos y coordenadas fuera de límites para no generar silenciosamente una dirección ajena al array.

También debe indicar el tamaño real del elemento: por ejemplo, cuatro bytes para un entero habitual de 32 bits u ocho para un double. Si conoce el comienzo del array, escriba esa dirección base no negativa. Si no, conserve cero y lea el resultado como desplazamiento desde el inicio.

Comprenda el cálculo de pasos por filas

En el orden por filas, el último eje se almacena de forma contigua; avanzar una posición en él equivale a avanzar un elemento, por lo que su paso vale uno. El paso de cualquier eje anterior es el producto de todas las dimensiones situadas a su derecha. Con dimensiones 3 por 4 por 5, los pasos son 20, 5 y 1: cambiar de plano salta cuatro filas de cinco elementos, cambiar de fila salta cinco elementos y cambiar de columna salta uno.

La herramienta multiplica cada índice por el paso de su eje y muestra el producto como aportación. La suma proporciona el índice lineal. Para 1, 2 y 3, se calcula 1 por 20 más 2 por 5 más 3 por 1, cuyo resultado es 33.

Los valores intermedios permiten auditar la operación y detectar dimensiones invertidas o multiplicadores propios del orden por columnas. Toda la aritmética usa enteros comprobados; si un producto o suma supera el rango entero seguro de JavaScript, se devuelve un error en vez de una dirección redondeada.

Convierta el índice del elemento en una dirección de bytes

Un índice lineal cuenta elementos, no bytes. Para obtener el desplazamiento en bytes, multiplíquelo por el tamaño de cada elemento. El elemento 33, si cada elemento ocupa ocho bytes, comienza 264 bytes después del inicio.

La dirección final es ese desplazamiento sumado a la base indicada: con una base 4096, el elemento comienza en 4360. La respuesta mantiene separados índice lineal, desplazamiento, base y dirección para que usted pueda contrastar cada etapa con código fuente, un depurador, una especificación binaria o un búfer de GPU. Se devuelve un entero decimal exacto dentro del rango seguro; la herramienta no accede a memoria ni inspecciona procesos.

Se supone un array denso, contiguo y sin relleno entre filas o elementos. Las filas con pitch, dimensiones principales explícitas, vistas seccionadas y pasos personalizados requieren sus pasos físicos reales.

Comprobar aritmética de punteros

Verifique los desplazamientos de elementos y bytes usados en C, C++, Rust o WebAssembly antes de acceder a un búfer aplanado.

Depurar el aplanado de tensores

Compare los pasos y aportaciones por filas esperados con una biblioteca de tensores, un serializador o una rutina de intercambio.

Explicar la disposición en memoria

Muestre cómo cada coordenada multidimensional contribuye a una posición contigua y a su dirección final.

¿Los índices comienzan en cero?

Sí. Cada índice parte de cero y debe ser menor que el tamaño de su dimensión.

¿Qué significa orden por filas?

Es una disposición contigua donde el último eje cambia con mayor rapidez, como en los arrays multidimensionales habituales de C.

¿Qué dirección base debo utilizar?

Indique la dirección en bytes donde comienza el array. Use cero si solo necesita un desplazamiento relativo al inicio.

¿Admite arrays ordenados por columnas?

No. El cálculo implementa expresamente el orden por filas; el almacenamiento por columnas necesita otra secuencia de pasos.

¿Incluye relleno de filas o pasos personalizados?

No. Supone elementos densos y contiguos. El almacenamiento con pitch, relleno, transposición o secciones necesita sus pasos físicos.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

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

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

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"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_dimensions32
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Convierta el índice del elemento en una dirección de bytes

Cada solicitud a la API cuesta $0.002; para comprobaciones rápidas, el mismo cálculo determinista funciona en el navegador.

¿Cuánto cuesta mediante la API?

Cada solicitud cuesta $0.002. La versión del navegador ejecuta localmente el mismo cálculo determinista.

Ver la documentación completa del KIT →