UncharToLong.cpp
资源名称:MMS.rar [点击查看]
上传用户:szhqbq
上传日期:2014-07-08
资源大小:46k
文件大小:2k
源码类别:
手机彩信(MMS)编程
开发平台:
Visual C++
- #include "stdafx.h"
- //////////////////////////////////////////////////////////////////////////
- // void UintvarEncode(IN DWORD dwUintvar,IN BYTE byLength,IN OUT BYTE **ppPDU)
- // 函数功能:
- // 变长无符号整数编码,并填入PDU对应的位置
- // 参数说明:
- // dwUintvar: 输入参数,待编码的变长无符号整数
- // byLength: 输入参数,变长无符号整数编码后的长度
- // ppPDU: 输入输出参数,指向PDU当前位置指针的指针
- // 返回值:
- //
- // 备注:
- // 整数填入了PDU后,PDU当前位置指针将后移
- // 修改记录:
- // 1: 谭伟基 2007/04/01撰写
- // 2: 谭伟基 2007/04/04修改
- //////////////////////////////////////////////////////////////////////////
- //void UintvarEncode(IN DWORD dwUintvar,
- // IN OUT BYTE **ppPDU)
- void UintvarEncode(IN DWORD dwUintvar,
- IN BYTE byLength,
- IN OUT BYTE **ppPDU)
- {
- /* int i;
- //找出编码结果的长度
- for (i = 4;(i >= 0)&&(!(dwUintvar>>i*7));i--)
- {
- }
- //对每7bit编码并填入PDU
- for(;i >= 0;i--,(*ppPDU)++)
- */
- for(int i = byLength - 1;i >=0;i--,(*ppPDU)++)
- {
- **ppPDU = (BYTE)((dwUintvar>>i*7)&0x7F)|(!i?0:0x80);
- }
- }
- //////////////////////////////////////////////////////////////////////////
- // BYTE GetUintvarLength(IN DWORD dwUintvar)
- // 函数功能:
- // 计算出变长无符号整数编码后的长度
- // 参数说明:
- // dwUintvar: 输入参数,待编码的变长无符号整数
- // 返回值:
- // 变长无符号整数编码后的长度
- // 备注:
- //
- // 修改记录:
- // 1: 谭伟基 2007/04/4撰写
- //////////////////////////////////////////////////////////////////////////
- BYTE GetUintvarLength(IN DWORD dwUintvar)
- {
- int i;
- if (!dwUintvar)
- {
- return 1;
- }
- for (i = 4;(i >= 0)&&(!(dwUintvar>>i*7));i--)
- {
- }
- return i+1;
- }