C++ 代码改java代码--急急!!
来源:互联网 发布:青年网络公开课视频 编辑:程序博客网 时间:2024/06/07 07:02
typedef struct
{
BYTE baOrigMDN[8]; /* 主叫用户MDN */
BYTE baDestMDN[8]; /* 被叫用户MDN */
BYTE bOrigIsVIP; /* 对SP无用*/
BYTE bMsgIsSeed; /* 短消息是否种子 */
BYTE baSeedID[6]; /* 种子短信ID */
BYTE baQijiSeedID[6]; /* 种子短信ID标示 */
}csrMTSMsgStrc_T;
如何将baQijiSeedID[6]的内容转成时间字符串(YYYYMMDDHHMMSS)的算法:
BYTE baTimeTmp[6] ={0};
CHAR caSubmitTime[20] = {0}; //内容为YYYYMMDDHHMMSS的时间
memcpy(baTimeTmp, baQijiSeedID, 6); //把baQijiSeedID内存区域的6个字节复制到baTimeTmp
if (0x80 == (baQijiSeedID [4] & 0xC0))
{
baTimeTmp[0] = 0;
}
if (0x20 == (baQijiSeedID [4] & 0x30))
{
baTimeTmp[1] = 0;
}
if (0x08 == (baQijiSeedID [4] & 0x0C))
{
baTimeTmp[2] = 0;
}
if (0x02 == (baQijiSeedID [4] & 0x03))
{
baTimeTmp[3] = 0;
}
csfClockDecodeProc(baTimeTmp, (BYTE *) caSubmitTime);
// 时间结构
typedef struct
{
BYTE second;
BYTE minute;
BYTE hour;
BYTE day;
BYTE month;
WORD year;
BYTE week;
BYTE Count10ms;
} ClockStruc;
/*
* FUNCTION NAME: void TIME_TO_CLOCK(TimePtr, ClockPtr)
* DESCRIPTION: relative clock to real clock
* INPUT: TimePtr: store time pointer
* ClockPtr: store clock pointer
*/
void TIME_TO_CLOCK(DWORD *TimePtr, ClockStruc *ClockPtr)
{
WORD DaysPerYear = 365;
WORD year;
DWORD days, dayss;
DWORD seconds;
BYTE month, day, week, hour, minute, second;
days = *TimePtr / 86400; //一天86400s转换为days
seconds = *TimePtr % 86400;
hour = (BYTE)(seconds / 3600);
seconds = seconds % 3600;
minute = (BYTE)(seconds / 60);
second = (BYTE)(seconds % 60);
dayss = days;
/* compute year */
year = 1994;
while (days >= DaysPerYear) // DaysPerYear = 365
{
days -= DaysPerYear;
if ((++ year % 4) == 0)
DaysPerYear = 366;
else
DaysPerYear = 365;
}
/* compute month */
if ((year % 4) == 0)
DaysPerMonth[1] = 29;
else
DaysPerMonth[1] = 28;
month = 1;
while (days >= DaysPerMonth[month - 1])
{
days -= DaysPerMonth[month - 1];
month ++;
}
/* compute date and week */
day =(BYTE)(days + 1);
week = (BYTE)((dayss + 6) % 7);
if (week == 0)
week = 7;
ClockPtr->year = year;
ClockPtr->month = month;
ClockPtr->day = day;
ClockPtr->hour = hour;
ClockPtr->minute = minute;
ClockPtr->second = second;
ClockPtr->week = week;
}
/*---------------------------------------------------------------------
- 函 数 名: csfClockDecodeProc
- 功能描述: 将DWORD(4个字节)时间值转换为YYYYMMDDHHMMSS字符串
- 输 入: BYTE *pTime ---->DWORD值(秒数)的版权短信发送时间
-
- 输 出: const BYTE *pClock ----> YYYYMMDDHHMMSS字符串
-----------------------------------------------------------------------*/
void csfClockDecodeProc(const BYTE *pbTime, BYTE *pbClock)
{
ClockStruc tClockPtr = {0};
DWORD dwTime = 0 ;
BYTE i;
memcpy(&dwTime, pbTime, 4);
TIME_TO_CLOCK(&dwTime, &tClockPtr);
memset(pbClock, 0, 20);
for (i = 0; i < 4; i++) /* 年 */
{
pbClock[3 - i] = tClockPtr.year % 10 + 0x30;
tClockPtr.year = tClockPtr.year / 10;
}
pbClock[4] = tClockPtr.month / 10 + 0x30; /* 月 */
pbClock[5] = tClockPtr.month % 10 + 0x30;
pbClock[6] = tClockPtr.day / 10 + 0x30; /* 日 */
pbClock[7] = tClockPtr.day % 10 + 0x30;
pbClock[8] = tClockPtr.hour / 10 + 0x30; /* 时 */
pbClock[9] = tClockPtr.hour % 10 + 0x30;
pbClock[10] = tClockPtr.minute / 10 + 0x30; /* 分 */
pbClock[11] = tClockPtr.minute % 10 + 0x30;
pbClock[12] = tClockPtr.second / 10 + 0x30; /* 秒 */
pbClock[13] = tClockPtr.second % 10 + 0x30;
}
步骤如下:1:将BCD码的高低4位互换
2:将互换后的BCD码转为字符串
A)对于种子短信ID的转码算法
/*---------------------------------------------------------------------
- 函 数 名: csBcdToStr
- 功能描述: 将BCD码转换成字符串
- 输 入: pbBcd ----> BCD码流
- bInLen ----> BCD码流的字节数
- bBufLen ----> 接收字符串用缓冲区长度
- 输 出: pcStrBuf ----> 接收字符串用缓冲区
- 返 回: TRUE/FALSE
-----------------------------------------------------------------------*/
BOOL csBcdToStr( BYTE* pbBcd,
BYTE bInLen,
PCHAR pcStrBuf,
BYTE bBufLen)
{
BYTE bTmp;
BYTE cTmp;
BYTE i;
BYTE bMaxBcdLen;
if( !pbBcd || !pcStrBuf || !bBufLen ) /* 入参检查 */
{
return FALSE;
}
bMaxBcdLen = min(bInLen*2, bBufLen-1);
for( i=0; i<bMaxBcdLen; i++ )
{
bTmp = pbBcd[i/2];
if( i&1 ) /* 奇数 */
{
bTmp = bTmp >> 4;
}
bTmp &= 0x0f;
if((bTmp >= 0) && (bTmp <=9))
cTmp = bTmp +'0';
else if(bTmp == 0x0d)
cTmp = '*';
else if(bTmp == 0x0e)
cTmp = '#';
else if (bTmp == (BYTE)0x0f)
break;
else
return FALSE;
pcStrBuf[i] = cTmp;
}
pcStrBuf[i] = 0; /* 字符串结束 */
return TRUE;
}
B)对于用户MDN的转码算法
VOID csrBCDToString(const BYTE *lpBcd,CHAR *lpString,BYTE size)
{
BYTE i,j=0;
BYTE ch;
for(i=0;i<size;i++)
{
ch = (lpBcd[i]&0xF0)>>4;
if(ch<=9 /*&& ch>=0*/)
{
lpString[j] = (CHAR)(ch+0x30); //from '0'
j++;
}
else if(ch>=10 && ch<=15)
{
lpString[j] = (CHAR)(ch+0x41-10); //from 'A'
j++;
}
else // if(ch==0x0f)
{
if( j< size*2 )
{
while ( j<size*2 ) lpString[j++] = 'f';
lpString[j] = 0x00;
return ;
}
lpString[j++]=0x00;
break;
}
ch = lpBcd[i]&0x0F;
if(ch<=9 /*&& ch>=0*/)
lpString[j++]= (CHAR)(ch+0x30);
else if(ch>=10 && ch<=15)
lpString[j++] = (CHAR)(ch+0x41-10); //from A
else //if(ch==0x0f)
{
if( j< size*2 )
{
while(j<size*2) lpString[j++] = 'f';
lpString[j] = 0x00;
return ;
}
lpString[j++]=0x00;
break;
}
} // for
lpString[j++]=0x00;
return ;
}
- C++ 代码改java代码--急急!!
- 急急怎么办 网站板块错乱 后台改了个底部代码
- JAVA增删改查代码
- JAVA增删改查代码
- 请教下c#代码不理解 急急急..!
- 改代码?写代码?
- c代码调用java代码
- JAVA增删改查 代码范例
- HDFS Java代码进行增删改查
- 急急急!!用java代码远程调用linux命令为啥不出来结果啊!!!命令:java -version
- C调用java代码
- C调用java代码
- java 调用C代码
- Java代码转C代码经验
- Java代码转C代码经验
- c代码回调java中的代码
- C代码回调java代码
- Java代码中调用C/C++代码
- chroot用法
- snprintf函数用法
- CSS基础教程整理
- versions
- 《大话设计模式》之依赖倒转设计原则
- C++ 代码改java代码--急急!!
- JS建空表
- Oracle10g EM使用中的主机身份证明问题
- html语言中meta标签用法
- makefile 中的 wildcard 与 patsubst 函数
- c语言 文件操作
- 距离矢量路由协议(distance vector) VS 链路状态路由协议(link-state)
- GCC的编译流程详解
- 用DOM4j解析xml文件,获得所有节点信息 http://blog.csdn.net/yizhizouxiaqu/archive/2009/12/10/4977122.aspx