Codificador PDU online para mensajes SMS-SUBMIT
Convierte un mensaje en la cadena hexadecimal que un modem GSM espera en modo PDU. El codificador empaqueta séptets GSM-7, cambia a UCS-2 cuando hace falta y añade un UDH cuando el mensaje necesita más de una parte.
Codifica un mensaje en un PDU SMS-SUBMIT
El formulario empieza con un ejemplo conocido. Cambia el texto, el número o las opciones y pulsa Codificar. La salida la construye JavaScript en esta máquina.
Codificador PDU
Sin conexión| Parte | UDH | Texto en esta parte |
|---|
Cada bloque empieza por ----- PDU n/total -----. En modo PDU, envía el hexadecimal de cada bloque por separado.
Nada de lo que escribes aquí se envía a ningún sitio. La página funciona desde un archivo local o desde una copia sin conexión de este sitio.
Qué es el modo PDU
El modo PDU entrega al modem una trama de protocolo completa en lugar de una cadena simple.
Un SMS no es solo texto. Alrededor del mensaje hay una dirección de centro de servicio, un destino, un marcador de codificación, un periodo de validez y un campo de longitud. En modo texto (AT+CMGF=1) el modem los rellena por ti y muestra solo la parte legible. En modo PDU (AT+CMGF=0) aportas la trama completa en hexadecimal, así que todos los campos quedan bajo tu control.
La trama está definida en 3GPP TS 23.040. El alfabeto de caracteres y su empaquetado de 7 bits están definidos en TS 23.038. Este codificador sigue ambas: quita los caracteres que no son dígitos del número, intercambia los pares restantes a BCD, fija el octeto de tipo de dirección, selecciona GSM-7 o UCS-2, empaqueta los séptets en orden y activa el indicador de cabecera de datos de usuario cuando un mensaje se divide.
Por qué el texto parece raro. Los caracteres de siete bits se empaquetan en octetos de ocho, así que un séptet puede cruzar dos bytes. Un PDU GSM-7 no es por tanto un volcado de un byte por carácter, y editarlo a mano se rompe con facilidad.
Por qué importa el primer octeto. El octeto que sigue al centro de servicio lleva el tipo de mensaje, el indicador de informe de entrega y el indicador de concatenación. Este codificador escribe 0x01 más 0x40 para un mensaje dividido, 0x10 cuando hay un periodo de validez y 0x20 cuando solicitas un informe.
Estructura de campos de SMS-SUBMIT
Leyendo la salida de izquierda a derecha, los campos son:
| Campo | Octetos | Qué lleva | Qué escribe este codificador |
|---|---|---|---|
| SCA | 1 + n | Dirección del centro de servicio y su octeto de tipo de dirección | 00 cuando lo dejas vacío; si no, el octeto de longitud, el tipo de dirección y los dígitos BCD |
| Primer octeto | 1 | Tipo de mensaje, formato de validez, solicitud de informe, indicador de cabecera de datos de usuario | 01 para SMS-SUBMIT, con 40, 10 y 20 añadidos según haga falta |
| MR | 1 | Referencia de mensaje que incrementa el teléfono | La referencia de concatenación, truncada a un octeto; 00 cuando no se fija |
| Destino | 2 + n | Longitud del número, tipo de dirección y dígitos BCD | 81 para un número nacional, 91 cuando la entrada empieza por + |
| PID | 1 | Identificador de protocolo | 00, un mensaje corto normal |
| DCS | 1 | Alfabeto y clase de mensaje | 00 GSM-7, 08 UCS-2, 10 o 18 para un mensaje flash |
| VP | 0, 1 o 7 | Periodo de validez relativo, mejorado o absoluto | Se omite a 0 horas; si no, un octeto relativo cuyo paso crece con el rango (5 minutos, media hora, días, semanas) |
| UDL | 1 | Longitud de los datos de usuario | Número de séptets en GSM-7 (el UDH cuenta como séptets), número de octetos en UCS-2 |
| UD | n | UDH opcional más el texto empaquetado | Empaquetado de 7 bits tras un UDH alineado a byte, o UCS-2 big-endian |
El periodo de validez relativo usa un octeto: los valores 0–143 cuentan pasos de 5 minutos hasta 12 horas, 144–169 pasos de media hora hasta 24 horas, 170–196 días hasta 30 días y 197–255 semanas más allá, todos contados desde el momento en que el centro de servicio recibe el mensaje. Esta herramienta admite 0–8760 horas (aproximadamente un año).
GSM-7, UCS-2 y SMS concatenados
Un PDU lleva 140 octetos. Cuántos caracteres caben depende del alfabeto y de si hay un UDH.
| Codificación | PDU único | Con UDH de 8 bits | Con UDH de 16 bits |
|---|---|---|---|
| GSM-7 | 160 séptets | 153 séptets | 152 séptets |
| UCS-2 | 70 unidades | 67 unidades | 66 unidades |
Un UDH de 6 bytes ocupa 48 bits, que se redondean a 7 ranuras de séptet en GSM-7; una referencia de 16 bits añade un octeto más y una ranura más. Por eso los límites de división son 153 o 152 en lugar de 160.
GSM-7 cubre las letras latinas, los dígitos y la puntuación que define el alfabeto GSM original. Diez caracteres necesitan dos séptets: €, ^, {, }, [, ], ~, |, la barra invertida y el carácter de salto de página. El codificador escribe el código de escape 1B delante de cada uno y nunca divide un par entre dos partes. Cualquier carácter fuera de ambas tablas fuerza UCS-2, donde cada carácter ocupa dos octetos y el límite baja a 70.
Ejemplos resueltos
Estas salidas vienen del archivo de regresión que acompaña esta página. Las entradas no cambian y el hexadecimal esperado lo produjo una implementación independiente de TS 23.038 / TS 23.040.
| Entrada | Codificación | PDU |
|---|---|---|
| Hello SMSDeliverer.com! | GSM-7, número nacional, sin centro de servicio | 000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700 |
| € | Carácter de extensión GSM-7 | 000100098121436587F90000029B32 |
| 您好,世界! | UCS-2 | 000100098121436587F900080C60A8597DFF0C4E16754CFF01 |
El registro de pruebas es assets/js/tests/pdu-vectors.json. También conserva una cadena grabada de una build antigua; ese vector está marcado como fallido con sus defectos escritos, y no se edita hasta que pase.
Cuándo usar PDU en lugar del modo texto
El modo texto es más fácil de leer. El modo PDU es la única forma de controlar lo que se envía realmente.
Mensajes largos
Un SMS concatenado son varios PDUs unidos por un UDH. Las partes, su orden y el número de referencia solo se ven en modo PDU.
Trabajo de integración
Si construyes una pasarela, un banco de pruebas o una cola que entrega tramas a AT+CMGS, necesitas los octetos exactos y no la interpretación que un modem hace de una cadena.
Diagnóstico
El texto corrupto, los acentos que faltan y los mensajes divididos suelen venir de un DCS erróneo o de un UDH roto. Ambos se ven aquí.
Ambos modos llegan a la misma red y se facturan igual. La diferencia está en dónde se monta la trama: dentro del modem o en software que puedes inspeccionar. Cuando un mensaje debe llevar un alfabeto concreto, un periodo de validez o una solicitud de informe de entrega, el modo PDU es el camino más corto. El modo texto sigue teniendo su sitio para una prueba manual rápida, y el decodificador de este sitio puede leer cualquiera de las dos tramas cuando llegue.
¿Necesitas una solución automatizada?
Esta página es una herramienta de referencia. SMS Deliverer hace el mismo trabajo para cada mensaje de una cola.
La aplicación para Windows divide los mensajes largos, elige GSM-7 o UCS-2, fija una referencia de UDH, reintenta las partes fallidas y guarda el informe de entrega junto al contacto. La misma ruta de codificación se usa tanto si envías un mensaje como unos miles, y las tarjetas SIM de tus propios modems llevan el tráfico.
La guía del modem GSM explica el lado del hardware, la página del software de escritorio enumera las funciones de envío e informes, y el decodificador PDU lee tramas capturadas de un modem o un teléfono.
Incluido en la salida del codificador
- Empaquetado de séptets GSM-7 y pares de extensión
- UCS-2 con pares suplentes intactos
- Referencias de concatenación de 8 y 16 bits
- Formatos de destino nacional e internacional
- Periodo de validez relativo y clase flash
Revisado en 2026-11. Una prueba gratis cubre la ruta de envío de principio a fin; esta herramienta no necesita licencia ni instalación.
Preguntas frecuentes antes de comprar
¿Este codificador es gratis y necesita cuenta?
Es gratis y no necesita cuenta. La página es HTML y JavaScript simples, y también funciona desde una copia sin conexión del sitio.
¿Por qué mi PDU empieza por 00?
El primer octeto es la longitud de la dirección del centro de servicio. 00 significa que el PDU no lleva centro de servicio, así que el teléfono o el modem usan el que está guardado en la SIM. Escribe un número de centro de servicio si quieres que se grabe en la trama.
¿Por qué un mensaje largo se convirtió en varios PDUs?
Un PDU contiene 140 octetos. GSM-7 admite 160 séptets, o 153 cuando hay un UDH de 6 bytes; UCS-2 admite 70, o 67 con la misma cabecera. El texto se divide en un límite de carácter y cada parte recibe un número de secuencia.
¿Puedo enviar la salida con AT+CMGS?
Sí. Pon el modem en modo PDU con AT+CMGF=0 y pasa el número de octetos de la trama después del campo del centro de servicio. Envía una parte a la vez y mantén el orden, porque el teléfono vuelve a unir las partes por la referencia del UDH y la secuencia.