gsmencode7bit.c

来自「GSM短信息7-bit编码程序」· C语言 代码 · 共 66 行

C
66
字号
#include <my.h>
//7-bit编码
//pSrc:源字符串指针
//pDst:目标字符串指针
//nSrcLength:源字符串长度
//返回:目标编码串长度
int gsmEncode7bit(const uchar *pSrc,uchar *pDst,uint nSrcLength)
{
 uint nSrc;
 uint nDst;
 uint nChar;
 uchar nLeft;
 nSrc=0;
 nDst=0;
 while(nSrc<nSrcLength)
 {
  nChar=nSrc&7;
  if(nChar==0)
  {
   nLeft=*pSrc;
  }
  else
  {
   *pDst=(*pSrc<<(8-nChar))|nLeft;
   nLeft=*pSrc>>nChar;
   nDst++;
  }
  pSrc++;
  nSrc++;
 }
 return nDst;
}

//可打印字符串转换为字节数据
//如:"C8329BFD0E01"-->{0xC8,0x32,0x9B,0xFD,0x0E,0x01}
//pSrc:源字符串指针
//pDst:目标数据指针
//nSrcLength:源字符串长度
//返回:目标数据长度
uint gsmString2Bytes(const uchar *pSrc,uchar *pDst,uint nSrcLength)
{
 uint i;
 for(i=0;i<nSrcLength;i+=2)
 {
  if(*pSrc>='0'&&*pSrc<='9')
  {
   *pDst=(*pSrc-'0')<<4;
  }
  else
  {
   *pDst=(*pSrc-'A'+10)<<4;
  }
  pSrc++;
  if(*pSrc>='0'&&*pSrc<='9')
  {
   *pDst|=*pSrc-'0';
  }
  else
  {
   *pDst|=*pSrc-'A'+10;
  }
  pSrc++;
  pDst++;
 }
 return nSrcLength;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?