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

📄 高手啊,,帮我将这个c程序改写delphi吧。有难度的。有关pdu转码的问题 delphi - windows sdk-api - csdn社区 community_csdn_net.htm

📁 PDU协议解释,分析信息传输的具体指令,扩大实际数据量
💻 HTM
📖 第 1 页 / 共 5 页
字号:
&nbsp; &nbsp; &nbsp; <BR>&nbsp; // &nbsp; 7-bit解码 &nbsp; <BR>&nbsp; // &nbsp; 
pSrc: &nbsp; 源编码串指针 &nbsp; <BR>&nbsp; // &nbsp; pDst: &nbsp; 目标字符串指针 &nbsp; 
<BR>&nbsp; // &nbsp; nSrcLength: &nbsp; 源编码串长度 &nbsp; <BR>&nbsp; // &nbsp; 返回: 
&nbsp; 目标字符串长度 &nbsp; <BR>&nbsp; int &nbsp; gsmDecode7bit(const &nbsp; unsigned 
&nbsp; char* &nbsp; pSrc, &nbsp; char* &nbsp; pDst, &nbsp; int &nbsp; 
nSrcLength) &nbsp; <BR>&nbsp; { &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
int &nbsp; nSrc; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 
&nbsp; 源字符串的计数值 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int &nbsp; nDst; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 目标解码串的计数值 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int &nbsp; nByte; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 当前正在处理的组内字节的序号,范围是0-6 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unsigned &nbsp; char &nbsp; nLeft; &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 上一字节残余的数据 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 计数值初始化 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nSrc &nbsp; = &nbsp; 0; &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; nDst &nbsp; = &nbsp; 0; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
组内字节序号和残余数据初始化 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nByte &nbsp; = 
&nbsp; 0; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nLeft &nbsp; = &nbsp; 0; 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; // &nbsp; 将源数据每7个字节分为一组,解压缩成8个字节 &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; // &nbsp; 循环该处理过程,直至源数据被处理完 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 如果分组不到7字节,也能正确处理 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
while(nSrc&lt;nSrcLength) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
将源字节右边部分与残余数据相加,去掉最高位,得到一个目标解码字节 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; *pDst &nbsp; = &nbsp; ((*pSrc &nbsp; &lt;&lt; &nbsp; 
nByte) &nbsp; | &nbsp; nLeft) &nbsp; &amp; &nbsp; 0x7f; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
将该字节剩下的左边部分,作为残余数据保存起来 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; nLeft &nbsp; = &nbsp; *pSrc &nbsp; &gt;&gt; &nbsp; 
(7-nByte); &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 修改目标串的指针和计数值 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
pDst++; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; nDst++; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 修改字节计数值 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nByte++; 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 到了一组的最后一个字节 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(nByte 
&nbsp; == &nbsp; 7) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; { &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 额外得到一个目标解码字节 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; *pDst &nbsp; = &nbsp; nLeft; &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 修改目标串的指针和计数值 &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; pDst++; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nDst++; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 组内字节序号和残余数据初始化 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; nByte &nbsp; = &nbsp; 0; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nLeft &nbsp; = 
&nbsp; 0; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; } &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 修改源串的指针和计数值 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pSrc++; 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
nSrc++; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; *pDst &nbsp; 
= &nbsp; 0; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 返回目标串长度 &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; return &nbsp; nDst; &nbsp; <BR>&nbsp; } &nbsp; <BR>&nbsp; &nbsp; 
<BR>&nbsp; 
需要指出的是,7-bit的字符集与ANSI标准字符集不完全一致,在0x20以下也排布了一些可打印字符,但英文字母、阿拉伯数字和常用符号的位置两者是一样的。用上面介绍的算法收发纯英文短消息,一般情况应该是够用了。如果是法语、德语、西班牙语等,含有 
&nbsp; “&amp;aring;”、 &nbsp; “é”这一类字符,则要按上面编码的输出去查表,请参阅GSM &nbsp; 03.38的规定。 
&nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 8-bit编码其实没有规定什么具体的算法,不需要介绍。 &nbsp; 
<BR>&nbsp; &nbsp; <BR>&nbsp; 
UCS2编码是将每个字符(1-2个字节)按照ISO/IEC10646的规定,转变为16位的Unicode宽字符。在Windows系统中,特别是在2000/XP中,可以简单地调用API 
&nbsp; 函数实现编码和解码。如果没有系统的支持,比如用单片机控制手机模块收发短消息,只好用查表法解决了。 &nbsp; <BR>&nbsp; &nbsp; 
<BR>&nbsp; Windows环境下,用C实现UCS2编码和解码的算法如下: &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; // 
&nbsp; UCS2编码 &nbsp; <BR>&nbsp; // &nbsp; pSrc: &nbsp; 源字符串指针 &nbsp; <BR>&nbsp; 
// &nbsp; pDst: &nbsp; 目标编码串指针 &nbsp; <BR>&nbsp; // &nbsp; nSrcLength: &nbsp; 
源字符串长度 &nbsp; <BR>&nbsp; // &nbsp; 返回: &nbsp; 目标编码串长度 &nbsp; <BR>&nbsp; int 
&nbsp; gsmEncodeUcs2(const &nbsp; char* &nbsp; pSrc, &nbsp; unsigned &nbsp; 
char* &nbsp; pDst, &nbsp; int &nbsp; nSrcLength) &nbsp; <BR>&nbsp; { &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int &nbsp; nDstLength; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; UNICODE宽字符数目 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WCHAR &nbsp; wchar[128]; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; UNICODE串缓冲区 &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
字符串--&gt;UNICODE串 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nDstLength 
&nbsp; = &nbsp; ::MultiByteToWideChar(CP_ACP, &nbsp; 0, &nbsp; pSrc, &nbsp; 
nSrcLength, &nbsp; wchar, &nbsp; 128); &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 高低字节对调,输出 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int &nbsp; i=0; &nbsp; 
i&lt;nDstLength; &nbsp; i++) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 
&nbsp; 先输出高位字节 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; *pDst++ &nbsp; = &nbsp; wchar[i] &nbsp; &gt;&gt; &nbsp; 8; &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
后输出低位字节 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; *pDst++ &nbsp; = &nbsp; wchar[i] &nbsp; &amp; &nbsp; 0xff; &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 返回目标编码串长度 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &nbsp; nDstLength &nbsp; * &nbsp; 
2; &nbsp; <BR>&nbsp; } &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
<BR>&nbsp; // &nbsp; UCS2解码 &nbsp; <BR>&nbsp; // &nbsp; pSrc: &nbsp; 源编码串指针 
&nbsp; <BR>&nbsp; // &nbsp; pDst: &nbsp; 目标字符串指针 &nbsp; <BR>&nbsp; // &nbsp; 
nSrcLength: &nbsp; 源编码串长度 &nbsp; <BR>&nbsp; // &nbsp; 返回: &nbsp; 目标字符串长度 &nbsp; 
<BR>&nbsp; int &nbsp; gsmDecodeUcs2(const &nbsp; unsigned &nbsp; char* &nbsp; 
pSrc, &nbsp; char* &nbsp; pDst, &nbsp; int &nbsp; nSrcLength) &nbsp; <BR>&nbsp; 
{ &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int &nbsp; nDstLength; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; UNICODE宽字符数目 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WCHAR &nbsp; wchar[128]; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; UNICODE串缓冲区 &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 
高低字节对调,拼成UNICODE &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int &nbsp; 
i=0; &nbsp; i&lt;nSrcLength/2; &nbsp; i++) &nbsp; <BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; { &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; // &nbsp; 先高位字节 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; wchar[i] &nbsp; = &nbsp; *pSrc++ &nbsp; &lt;&lt; 
&nbsp; 8; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp; 后低位字节 &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wchar[i] 
&nbsp; |= &nbsp; *pSrc++; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; UNICODE串--&gt;字符串 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
nDstLength &nbsp; = &nbsp; ::WideCharToMultiByte(CP_ACP, &nbsp; 0, &nbsp; wchar, 
&nbsp; nSrcLength/2, &nbsp; pDst, &nbsp; 160, &nbsp; NULL, &nbsp; NULL); &nbsp; 
<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 输出字符串加个结束符 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; pDst[nDstLength] &nbsp; = &nbsp; '\0'; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; // &nbsp; 返回目标字符串长度 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; return &nbsp; nDstLength; &nbsp; <BR>&nbsp; } &nbsp; <BR>&nbsp; &nbsp; 
<BR>&nbsp; 
用以上编码和解码模块,还不能将短消息字符串编码为PDU串需要的格式,也不能直接将PDU串中的用户信息解码为短消息字符串,因为还差一个在可打印字符串和字节数据之间相互转换的环节。可以循环调用sscanf和sprintf函数实现这种变换。下面提供不用这些函数的算法,它们也适用于单片机、DSP编程环境。 
&nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; // &nbsp; 可打印字符串转换为字节数据 &nbsp; <BR>&nbsp; // 
&nbsp; 如:"C8329BFD0E01" &nbsp; --&gt; &nbsp; {0xC8, &nbsp; 0x32, &nbsp; 0x9B, 
&nbsp; 0xFD, &nbsp; 0x0E, &nbsp; 0x01} &nbsp; <BR>&nbsp; // &nbsp; pSrc: &nbsp; 
源字符串指针 &nbsp; <BR>&nbsp; // &nbsp; pDst: &nbsp; 目标数据指针 &nbsp; <BR>&nbsp; // 
&nbsp; nSrcLength: &nbsp; 源字符串长度 &nbsp; <BR>&nbsp; // &nbsp; 返回: &nbsp; 目标数据长度 
&nbsp; <BR>&nbsp; int &nbsp; gsmString2Bytes(const &nbsp; char* &nbsp; pSrc, 
&nbsp; unsigned &nbsp; char* &nbsp; pDst, &nbsp; int &nbsp; nSrcLength) &nbsp; 
<BR>&nbsp; { &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int &nbsp; i=0; 
&nbsp; i&lt;nSrcLength; &nbsp; i+=2) &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; { &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; // &nbsp; 输出高4位 &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; if(*pSrc&gt;='0' &nbsp; &amp;&amp; &nbsp; *pSrc&lt;='9') 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { 
&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; *pDst &nbsp; = &nbsp; (*pSrc &nbsp; - &nbsp; '0') &nbsp; 
&lt;&lt; &nbsp; 4; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; } &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; else &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; { &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; *pDst &nbsp; = &nbsp; (*pSrc &nbsp; - 

⌨️ 快捷键说明

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