📄 unchartolong.cpp
字号:
#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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -