programa para pasar de septetos a octetos en tramas PDU
Fork of pdu1 by
main.cpp
- Committer:
- tony63
- Date:
- 2017-11-06
- Revision:
- 2:00bc5b7669c6
- Parent:
- 1:b0989e540fff
File content as of revision 2:00bc5b7669c6:
#include "mbed.h" Serial pc(USBTX, USBRX); // tx, rx /* ALGORITMO PARA PASAR DE SEPTETOS A OCTETOS EN UNA MENSAJE DE TEXTO DE CELULAR EN FORMATO PDU USA DOS CADENAS UNA DE ENTRADA Y OTRA DE SALIDA LENIN ES LA LONGITUD DE ENTRADA LENOUT LA LONGITUD DE SALIDA SE USA PARA ENSAMBLAR UNA TRAMA PDU ESTA CADENA DE SALIDA SE ENVIA SOBRE LA TRAMA PDU COMPLETA VERIFIQUE CON EL DECODIFICADOR DE ESTA PAGINA:: PROBADA PARA CUALQUIER LONGITUD VER:abril 27 DEL 2017 http://www.twit88.com/home/utility/sms-pdu-encode-decode */ char gi[50]; char gs[50]; int i,K,C,LENOUT,LENIN; void SepToOct(char *DE, char *DS);//se declara la funcion int main(){ ; //numero de caracteres de abajo pc.printf("prueba con gallina cafe\n"); char gi[]="gallina cafe es una cochina"; //en septetos es 67 61 6c 6c 69 6e 61 20 63 61 66 65 20 65 73 20 75 6e 61 20 63 6f 63 68 69 6e 61 //en octetos es E7-30-9B-9D-76-87-41-E3-B0-B9-0C-2A-CF-41-75-77-18-34-7E-8F-D1-69-77-18 SepToOct(gi,gs); for (i=0;i<LENOUT;i++){//imprime resultados pc.printf("%2X",gs[i]&0x000000FF); } pc.printf("\n"); for (i=0;i<LENOUT;i++){ if(gs[i]<0x10){ pc.printf("-%X%X",0,gs[i]); goto up1; } pc.printf("-%2X",gs[i]); up1: } pc.printf("\n"); pc.printf("LENOUT:%2X,LENIN:%2X\r\n",LENOUT,strlen(gi));// longitudes en hex } //------------------funcion de interes-- --------------------------- void SepToOct(char *DE, char *DS){ LENIN=strlen(DE); //se mide el tamaño de la cadena de entrada int K=0;int C=0; int i=0; for (i=0;i < LENIN;i++){ DS[i]=DE[i+C]>>K | DE[i+C+1]<<(7-K); if (DS[i]==0x00) {LENOUT=i; goto salir99;}// fin de la transformacion K++; if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion. } salir99: for (i=0;i<LENOUT;i++){ DS[i]=DS[i]&0x000000FF; } return; }