Ir para o conteúdo
Codificador PDU

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.

Funciona neste navegadorSem contaGSM-7 e UCS-2

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

GSM-7 acomoda 160 septetos em um SMS. Um caractere fora do alfabeto GSM move a mensagem inteira para UCS-2.

Nacional (0x81) a menos que o número comece com +, o que seleciona internacional (0x91).

0 deixa o campo de fora. A ferramenta limita a 8760 horas (cerca de um ano).

0–255 usa uma referência de 8 bits; 256–65535 usa uma referência de 16 bits.

Opções de relatório

ParteUDHTexto 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:

CampoOctetosO que carregaO que este codificador escreve
SCA1 + nEndereço do centro de serviço e seu octeto de tipo de endereço00 quando você o deixa vazio; caso contrário, o octeto de comprimento, o tipo de endereço e os dígitos BCD
Primeiro octeto1Tipo de mensagem, formato de validade, solicitação de relatório, indicador de cabeçalho de dados do usuário01 para SMS-SUBMIT, com 40, 10 e 20 adicionados conforme necessário
MR1Referência de mensagem incrementada pelo celularA referência de concatenação, truncada em um octeto; 00 quando não definida
Destino2 + nComprimento do número, tipo de endereço e dígitos BCD81 para um número nacional, 91 quando a entrada começa com +
PID1Identificador de protocolo00, uma mensagem curta normal
DCS1Alfabeto e classe da mensagem00 GSM-7, 08 UCS-2, 10 ou 18 para uma mensagem flash
VP0, 1 ou 7Período de validade relativo, aprimorado ou absolutoOmitido em 0 horas; caso contrário, um octeto relativo cujo passo cresce com o intervalo (5 minutos, meia hora, dias, semanas)
UDL1Comprimento dos dados do usuárioNúmero de septetos em GSM-7 (o UDH conta como septetos), número de octetos em UCS-2
UDnUDH opcional mais o texto empacotadoCompactaçã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çãoPDU únicoCom UDH de 8 bitsCom UDH de 16 bits
GSM-7160 septetos153 septetos152 septetos
UCS-270 unidades67 unidades66 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.

EntradaCodificaçãoPDU
Hello SMSDeliverer.com!GSM-7, número nacional, sem centro de serviço000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700
€Caractere de extensão GSM-7000100098121436587F90000029B32
您好,世界!UCS-2000100098121436587F900080C60A8597DFF0C4E16754CFF01

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.