Conversor de bases
Reescriba un número de una base a otra, desde la base 2 hasta la 36: 1010 en binario es 10 en decimal. Los valores grandes se mantienen exactos hasta la última cifra y el signo menos inicial se conserva. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Valor
- 1010
- Base de origen
- 2
- Base de destino
- 10
- Resultado
- 10
Convierte una cadena de dígitos de una base a otra entre la base 2 y la base 36 usando enteros grandes de precisión arbitraria, conservando un signo menos inicial opcional.
Qué significa realmente cambiar de base
Una base indica cuántas cifras distintas usa un sistema de numeración antes de pasar a una nueva posición. El decimal usa diez, el binario dos, el hexadecimal dieciséis y la base 36 las diez cifras más las veintiséis letras. La cantidad nunca cambia; solo cambia la forma de escribirla. Por eso 1010 en binario y 10 en decimal son el mismo número. El conversor lee sus cifras en la base de origen, calcula el número entero que representan y lo vuelve a escribir en la base de destino. Así, de binario a hexadecimal, de hexadecimal a decimal o de decimal a base 36, el proceso es siempre el mismo.
Los errores que este conversor evita
Muchas herramientas habituales pierden precisión en silencio cuando un número supera 2^53, y las últimas cifras de un identificador o de un resumen largo salen mal. Aquí cada valor se trata como un entero exacto de hasta 200 caracteres, así que nada se redondea. Una cifra que no existe en la base de origen, como un 2 en binario o una G en hexadecimal, se señala en lugar de ignorarse. Los prefijos como 0x no se aceptan, de modo que la base es siempre la que usted eligió. Solo admite números enteros: una coma decimal o una fracción no se convierten.
El mismo resultado exacto en cada conversión
Como la aritmética se ejecuta sobre BigInt, no hay pérdida silenciosa de precisión como la que pueden sufrir parseInt y Number.toString(radix) cerca de 2^53 y más allá, lo que hace esto seguro para hashes grandes, identificadores, valores de color o máscaras de bits. Los usos habituales incluyen las conversiones de binario a hexadecimal y de hexadecimal a decimal, la codificación de IDs en un alfabeto compacto en base 36 y la inspección del aspecto de un número en distintas bases.
Qué puede hacer con ella
Inspección numérica para desarrolladores
Convierta entre binario, octal, decimal y hexadecimal mientras depura máscaras de bits, banderas o valores de color.
IDs compactos en base 36
Codifique identificadores decimales grandes en una cadena más corta en base 36, o decodifíquelos de vuelta con exactitud usando enteros grandes.
Preguntas frecuentes
¿Maneja números muy grandes?
Sí. Los valores se analizan como BigInt, de modo que la conversión es exacta sin pérdida de coma flotante incluso más allá de 2^53.
¿Se permiten números negativos y letras?
Se conserva un signo menos inicial, las letras de la A a la Z sirven como dígitos por encima de 9, y la entrada se pasa a mayúsculas, de modo que 'ff' es igual a 'FF'.
¿Cómo paso de binario a hexadecimal?
Elija 2 como base de origen y 16 como base de destino, y escriba las cifras binarias. Los mismos pasos sirven para cualquier par de bases entre 2 y 36, por ejemplo de hexadecimal a decimal.
¿Puedo escribir 0x o 0b delante del número?
No. Esos prefijos se rechazan porque la base se elige aparte y no se adivina a partir del número. Quite el 0x o el 0b y elija la base 16 o la base 2.
¿Qué cifras usa la base 36?
Las cifras del 0 al 9 seguidas de las letras de la A a la Z, así que la base 16 llega hasta la F y la base 36 usa el alfabeto completo. Mayúsculas y minúsculas cuentan como la misma cifra.
Herramientas relacionadas
Para desarrolladores — acceso por API
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.
Endpoint de API
¿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.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/number-base \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"FF","from_base":16,"to_base":10}'const res = await fetch("https://api.kit.forhosting.com/dev/number-base", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "FF",
"from_base": 16,
"to_base": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/number-base",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "FF",
"from_base": 16,
"to_base": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/number-base", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"FF","from_base":16,"to_base":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"FF","from_base":16,"to_base":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/number-base", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"value": "FF",
"from_base": 16,
"to_base": 10
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.number_base",
"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.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_value_chars | 200 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Conversión de base con enteros grandes
Como el valor se mantiene como un BigInt y no como un número de JavaScript, las conversiones son exactas para magnitudes arbitrariamente grandes sin pérdida de coma flotante. dev.number_base analiza value como una cadena de dígitos en from_base, la acumula en un BigInt y luego vuelve a codificar ese entero en to_base. Tanto from_base como to_base son enteros en el rango de 2 a 36; los dígitos usan del 0 al 9 seguidos de la A a la Z, de modo que la base 16 usa del 0 a la F y la base 36 usa el alfabeto completo. La entrada se pasa a mayúsculas antes de analizarla, de modo que el hexadecimal 'ff' y 'FF' son equivalentes, y cada carácter se comprueba para que sea un dígito válido estrictamente inferior a from_base; cualquier otra cosa devuelve un error invalid_input tipado. La respuesta devuelve el value original, from_base, to_base y la cadena de resultado codificada, de modo que el ejemplo binario '1010' de la base 2 a la base 10 devuelve '10'.
Entrada aceptada y reglas estrictas
value debe ser una cadena no vacía de no más de 200 caracteres, y el resultado codificado también está limitado a 200 caracteres. Se admite y se conserva un único signo menos inicial a lo largo de la ida y vuelta, de modo que los números negativos se convierten correctamente, pero los prefijos de base se rechazan explícitamente: cualquier value que empiece por 0x, 0X, 0b o 0B devuelve invalid_input, porque la base la da from_base y no se infiere de un prefijo. No hay soporte para fracciones ni para la coma decimal, solo enteros. from_base y to_base deben ser ambos enteros dentro de 2 a 36; un valor fuera de esa ventana, un dígito que no sea legal para la base de origen, una cadena vacía o demasiado larga, o un signo menos solo, lanzan todos un error invalid_input tipado con un mensaje que nombra el fallo, de modo que quien llama puede capturarlo y mostrarlo limpiamente.
Casos de integración
Conversión de base por lotes
Llame a la API sobre una columna de valores para convertir un conjunto de datos entero entre dos bases en un solo trabajo.
Preguntas técnicas
¿Qué bases se admiten?
Cualquier base entera de 2 a 36 tanto para from_base como para to_base, usando los dígitos del 0 al 9 y luego de la A a la Z.
¿Puedo usar los prefijos 0x o 0b?
No. Los valores con prefijo se rechazan con invalid_input; la base procede de from_base, no de un prefijo.
¿Cuáles son los límites y el coste?
value y el resultado están limitados cada uno a 200 caracteres; el widget del navegador es gratuito y la API factura solo las tareas correctas a $0.002.