Codificador PDU online para mensagens SMS-SUBMIT
Converta uma mensagem na string hexadecimal que um modem GSM espera no modo PDU. O codificador empacota septetos GSM-7, muda para UCS-2 quando necessário e adiciona um UDH quando a mensagem precisa de mais de uma parte.
Codifique uma mensagem em um PDU SMS-SUBMIT
O formulário começa com um exemplo conhecido. Altere o texto, o número ou as opções e pressione Codificar. A saída é montada por JavaScript nesta máquina.
Codificador PDU
Offline| Parte | UDH | Texto nesta parte |
|---|
Cada bloco começa com ----- PDU n/total -----. No modo PDU, envie o hexadecimal de cada bloco separadamente.
Nada do que você digita aqui é enviado a lugar algum. A página funciona a partir de um arquivo local ou de uma cópia offline deste site.
O que é o modo PDU
O modo PDU entrega ao modem uma trama de protocolo completa em vez de uma string simples.
Um SMS não é só texto. Ao redor da mensagem há um endereço de centro de serviço, um destino, um marcador de codificação, um período de validade e um campo de comprimento. No modo texto (AT+CMGF=1) o modem preenche esses campos para você e mostra apenas a parte legível. No modo PDU (AT+CMGF=0) você fornece a trama inteira em hexadecimal, então todos os campos ficam sob seu controle.
A trama é definida na 3GPP TS 23.040. O alfabeto de caracteres e sua compactação de 7 bits são definidos na TS 23.038. Este codificador segue as duas: remove os caracteres que não são dígitos do número, troca os pares restantes por BCD, define o octeto de tipo de endereço, seleciona GSM-7 ou UCS-2, empacota os septetos em ordem e ativa o indicador de cabeçalho de dados do usuário quando uma mensagem é dividida.
Por que o texto parece estranho. Caracteres de sete bits são empacotados em octetos de oito, então um septeto pode atravessar dois bytes. Um PDU GSM-7 não é, portanto, um despejo de um byte por caractere, e editá-lo à mão quebra com facilidade.
Por que o primeiro octeto importa. O octeto que segue o centro de serviço carrega o tipo de mensagem, o indicador de relatório de entrega e o indicador de concatenação. Este codificador escreve 0x01 mais 0x40 para uma mensagem dividida, 0x10 quando há um período de validade e 0x20 quando você solicita um relatório.
Estrutura de campos do SMS-SUBMIT
Lendo a saída da esquerda para a direita, os campos são:
| Campo | Octetos | O que carrega | O que este codificador escreve |
|---|---|---|---|
| SCA | 1 + n | Endereço do centro de serviço e seu octeto de tipo de endereço | 00 quando você o deixa vazio; caso contrário, o octeto de comprimento, o tipo de endereço e os dígitos BCD |
| Primeiro octeto | 1 | Tipo de mensagem, formato de validade, solicitação de relatório, indicador de cabeçalho de dados do usuário | 01 para SMS-SUBMIT, com 40, 10 e 20 adicionados conforme necessário |
| MR | 1 | Referência de mensagem incrementada pelo celular | A referência de concatenação, truncada em um octeto; 00 quando não definida |
| Destino | 2 + n | Comprimento do número, tipo de endereço e dígitos BCD | 81 para um número nacional, 91 quando a entrada começa com + |
| PID | 1 | Identificador de protocolo | 00, uma mensagem curta normal |
| DCS | 1 | Alfabeto e classe da mensagem | 00 GSM-7, 08 UCS-2, 10 ou 18 para uma mensagem flash |
| VP | 0, 1 ou 7 | Período de validade relativo, aprimorado ou absoluto | Omitido em 0 horas; caso contrário, um octeto relativo cujo passo cresce com o intervalo (5 minutos, meia hora, dias, semanas) |
| UDL | 1 | Comprimento dos dados do usuário | Número de septetos em GSM-7 (o UDH conta como septetos), número de octetos em UCS-2 |
| UD | n | UDH opcional mais o texto empacotado | Compactação de 7 bits após um UDH alinhado a byte, ou UCS-2 big-endian |
O período de validade relativo usa um octeto: valores 0–143 contam passos de 5 minutos até 12 horas, 144–169 passos de meia hora até 24 horas, 170–196 dias até 30 dias e 197–255 semanas além disso, todos contados a partir do momento em que o centro de serviço recebe a mensagem. Esta ferramenta aceita 0–8760 horas (cerca de um ano).
GSM-7, UCS-2 e SMS concatenados
Um PDU carrega 140 octetos. Quantos caracteres cabem depende do alfabeto e de haver ou não um UDH.
| Codificação | PDU único | Com UDH de 8 bits | Com UDH de 16 bits |
|---|---|---|---|
| GSM-7 | 160 septetos | 153 septetos | 152 septetos |
| UCS-2 | 70 unidades | 67 unidades | 66 unidades |
Um UDH de 6 bytes ocupa 48 bits, que são arredondados para 7 slots de septeto em GSM-7; uma referência de 16 bits acrescenta mais um octeto e mais um slot. Por isso os limites de divisão são 153 ou 152 em vez de 160.
GSM-7 cobre as letras latinas, os dígitos e a pontuação definidos pelo alfabeto GSM original. Dez caracteres precisam de dois septetos: €, ^, {, }, [, ], ~, |, a barra invertida e o caractere de salto de página. O codificador escreve o código de escape 1B antes de cada um deles e nunca divide um par entre duas partes. Qualquer caractere fora das duas tabelas força UCS-2, onde cada caractere ocupa dois octetos e o limite cai para 70.
Exemplos resolvidos
Estas saídas vêm do arquivo de regressão que acompanha esta página. As entradas não mudam e o hexadecimal esperado foi produzido por uma implementação independente da TS 23.038 / TS 23.040.
| Entrada | Codificação | PDU |
|---|---|---|
| Hello SMSDeliverer.com! | GSM-7, número nacional, sem centro de serviço | 000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700 |
| € | Caractere de extensão GSM-7 | 000100098121436587F90000029B32 |
| 您好,世界! | UCS-2 | 000100098121436587F900080C60A8597DFF0C4E16754CFF01 |
O registro de testes é assets/js/tests/pdu-vectors.json. Ele também guarda uma string gravada de uma build antiga; esse vetor está marcado como falho com suas falhas escritas, e não é editado até passar.
Quando usar PDU em vez do modo texto
O modo texto é mais fácil de ler. O modo PDU é a forma de controlar o que é realmente enviado.
Mensagens longas
Um SMS concatenado são vários PDUs unidos por um UDH. As partes, sua ordem e o número de referência só aparecem no modo PDU.
Trabalho de integração
Se você constrói um gateway, um harness de testes ou uma fila que entrega tramas a AT+CMGS, precisa dos octetos exatos e não da interpretação que um modem faz de uma string.
Diagnóstico
Texto corrompido, acentos faltando e mensagens divididas geralmente vêm de um DCS errado ou de um UDH quebrado. Ambos aparecem aqui.
Os dois modos chegam à mesma rede e são cobrados da mesma forma. A diferença está em onde a trama é montada: dentro do modem ou em software que você pode inspecionar. Quando uma mensagem precisa levar um alfabeto específico, um período de validade ou uma solicitação de relatório de entrega, o modo PDU é o caminho mais curto. O modo texto ainda tem seu lugar para um teste manual rápido, e o decodificador deste site consegue ler qualquer das duas tramas quando ela chega.
Precisa de uma solução automatizada?
Esta página é uma ferramenta de referência. O SMS Deliverer faz o mesmo trabalho para cada mensagem de uma fila.
O aplicativo para Windows divide mensagens longas, escolhe GSM-7 ou UCS-2, define uma referência de UDH, repete as partes que falharam e guarda o relatório de entrega junto ao contato. O mesmo caminho de codificação é usado se você envia uma mensagem ou alguns milhares, e os cartões SIM dos seus próprios modems levam o tráfego.
O guia do modem GSM explica o lado do hardware, a página do software para desktop lista os recursos de envio e relatórios, e o decodificador PDU lê tramas capturadas de um modem ou de um celular.
Incluído na saída do codificador
- Empacotamento de septetos GSM-7 e pares de extensão
- UCS-2 com pares substitutos intactos
- Referências de concatenação de 8 e 16 bits
- Formatos de destino nacional e internacional
- Período de validade relativo e classe flash
Revisado em 2026-11. Um teste grátis cobre o caminho de envio de ponta a ponta; esta ferramenta não precisa de licença nem de instalação.
Perguntas frequentes antes de comprar
Este codificador é grátis e precisa de conta?
É grátis e não precisa de conta. A página é HTML e JavaScript simples, e também funciona a partir de uma cópia offline do site.
Por que meu PDU começa com 00?
O primeiro octeto é o comprimento do endereço do centro de serviço. 00 significa que o PDU não carrega centro de serviço, então o celular ou o modem usa o que está guardado no SIM. Informe um número de centro de serviço se quiser que ele seja gravado na trama.
Por que uma mensagem longa virou vários PDUs?
Um PDU contém 140 octetos. GSM-7 acomoda 160 septetos, ou 153 quando há um UDH de 6 bytes; UCS-2 acomoda 70, ou 67 com o mesmo cabeçalho. O texto é dividido em um limite de caractere e cada parte recebe um número de sequência.
Posso enviar a saída com AT+CMGS?
Sim. Coloque o modem em modo PDU com AT+CMGF=0 e passe a contagem de octetos da trama depois do campo do centro de serviço. Envie uma parte de cada vez e mantenha a ordem, porque o celular remonta as partes pela referência do UDH e pela sequência.