⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 用c++ builder制作的UCCODE的解码函数
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <windows.h>
#pragma hdrstop

#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
char *string="0891683108200505F0840D916831588127F8000830302180635480064F60597D0021";
//---------------------------------------------------------------------------
void gsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength)
{
    int nDstLength;        // UNICODE宽字符数目
    WCHAR wchar[128];      // UNICODE串缓冲区
    for(int i=0; i<nSrcLength/2; i++)
    {
        wchar[i] = *pSrc++ << 8;
        wchar[i] |= *pSrc++;
    }
    nDstLength =WideCharToMultiByte(CP_ACP, 0, wchar, nSrcLength/2, pDst, 160, NULL, NULL);
    pDst[nDstLength] = '\0';
    ShowMessage(pDst);
}
//---------------------------------------------------------------------------
int gsmString2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength)
{
    for(int i=0; i<nSrcLength; i+=2)
    {
        // 输出高4位
        if(*pSrc>='0' && *pSrc<='9')
        {
          *pDst = (*pSrc - '0') << 4;
        }
        else
        {
          *pDst = (*pSrc - 'A' + 10) << 4;
        }
        pSrc++;
        // 输出低4位
        if(*pSrc>='0' && *pSrc<='9')
        {
          *pDst |= *pSrc - '0';
        }
        else
        {
          *pDst |= *pSrc - 'A' + 10;
        }
        pSrc++;
        pDst++;
    }
    return nSrcLength / 2;
}
//---------------------------------------------------------------------------
/*int gsmDecodePdu(const char *pSrc, SM_PARAM * pDst)
{
    int nDstLength;          // 目标PDU串长度
    unsigned char tmp;       // 内部用的临时字节变量
    unsigned char buf[256];  // 内部用的缓冲区

   // UCS2解码
   nDstLength = gsmString2Bytes(pSrc, buf, tmp * 2);        // 格式转换
   nDstLength = gsmDecodeUcs2(buf, pDst->TP_UD, nDstLength);    // 转换到TP-DU
    return nDstLength;
}*/

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  //int gsmString2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength)
  //void gsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength)
  char buf[100];
  unsigned char str[100];
  int dd=gsmString2Bytes(string,str,68);
  gsmDecodeUcs2(str,buf,dd);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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