📄 datatrans.cpp
字号:
#include "stdafx.h"
#include "UserHead.h"
#include "DataTrans.h"
DataTrans::DataTrans()
{}
DataTrans::~DataTrans()
{}
int DataTrans::AsciiToBCD(uchar* in,uchar* out)
{
int RtCode=0;
int SourceLen=0;
uchar t1,t2;
SourceLen=strlen((char*)in)%2;
if(SourceLen)
{
*in=toupper(*in);
if((*in)>'9')
*out=(*in)-'A'+10;
else *out=(*in)&0x0F;
in++;
out++;
RtCode++;
}
while(*in)
{
t1=toupper(*in);
t2=toupper(*(in+1));
if(t1>'9')t1=t1-'A'+10;
else t1=t1&0x0F;
if(t2>'9')t2=t2-'A'+10;
else t2=t2&0x0F;
*out=(t1<<4)+t2;
out++;
in+=2;
RtCode++;
}
return(RtCode);
}
int DataTrans::BCDToAscii(uchar* in, uchar* out, int num)
{
int Counter=0;
uchar t1,t2=0;
for(Counter=0;Counter<num;Counter++)
{
t1=(*(in+Counter))>>4;
t2=(*(in+Counter))&0x0F;
if(t1>9)
*(out+2*Counter)= t1-10+'A';
else *(out+2*Counter)= t1+'0';
if(t2>9)
*(out+2*Counter+1)= t2-10+'A';
else *(out+2*Counter+1)= t2+'0';
}
return(0);
}
int DataTrans::FormatMoney(char* strIn, char* strOut, int outlen)
{
char tmpstr[50];
long money;
money = (long)(atof(strIn)*100);
memset(strOut,0x30,outlen);
ltoa(money,tmpstr,10);
if(money>0)
{
memcpy(&strOut[(outlen-strlen(tmpstr))],tmpstr,strlen(tmpstr));
strOut[(outlen-strlen(tmpstr))+strlen(tmpstr)]='\0';
}
else
{
strOut[0]='-';
memcpy(&strOut[outlen-strlen(tmpstr)+1],tmpstr+1,strlen(tmpstr)-1);
strOut[outlen-strlen(tmpstr)+1+strlen(tmpstr)-1]='\0';
}
return 0;
}
void DataTrans::FormatString(char* source, int srclen, char* result)
{
/*
char buffer[100];
memcpy(buffer,source,srclen);
buffer[srclen]='\0';
CString strtemp;
strtemp.Format("%s",buffer);
strtemp.TrimLeft(" ");
strtemp.TrimRight(" ");
memset(result,32,srclen);
memcpy((result+(srclen-strtemp.GetLength())),\
strtemp.GetBuffer(strtemp.GetLength()),strtemp.GetLength());
result[srclen]='\0';
*/
return;
}
void DataTrans::HexToAsc(unsigned char *Sour,unsigned char *Dest,int Len)
{
int i;
unsigned char temp;
for (i=0 ;i<2*Len;)
{
temp = *(Sour+i/2) >>4;
if(temp > 0x09)
*(Dest + i++) = temp +0x37;
else
*(Dest + i++) = temp +0x30;
temp = *(Sour+i/2) &0x0f;
if(temp > 0x09)
*(Dest + i++) = temp +0x37;
else
*(Dest + i++) = temp +0x30;
}
Dest[i]='\0';
}
void DataTrans::AscToHex(unsigned char *Sour,unsigned char *Dest,int Len)
{
int i;
unsigned char high,low;
for(i=0;i<Len;)
{
high = *(Sour+i);
high = toupper(high);
low = *(Sour+i+1);
low = toupper(low);
if((high >='A') && (high <= 'F'))
high = high -'7';
else
high = high -'0';
if((low >='A') && (low <= 'F'))
low = low -'7';
else
low = low -'0';
*(Dest+i/2) = (high<<4) + low;
i += 2;
}
}
void DataTrans::GetAge(char * source, char * result)
{
/*
CTime tmptime=NULL, inputtime = NULL;
int age;
char year[4], month[2], day[2];
memcpy(year, source, 4);
memcpy(month, source+5, 2);
memcpy(day, source+8, 2);
tmptime = CTime::GetCurrentTime();
age = tmptime.GetYear()- atol(year);
if(tmptime.GetMonth()-atol(month)<1)
age--;
else if((tmptime.GetMonth()-atol(month))==0 || (tmptime.GetDay()-atol(day))<1)
age--;
sprintf(result, "%3d", age);
result[3]='\0';
*/
}
int DataTrans::GenerateSum(unsigned char * Sour)
{
int nType, i , nSum, nSubType;
int Len, nRideValue;
char tmpstr[256];
Len = strlen((char*)Sour);
nType = Len%2;
nSum = 0;
for(i = 0; i< Len; i++)
{
memcpy(tmpstr, &Sour[i], 1);
tmpstr[1]='\0';
switch(nType)
{
case 0:
nSubType = i % 2;
if(!nSubType)
nRideValue = atoi(tmpstr) * 1;
else
nRideValue = atoi(tmpstr) * 2;
break;
case 1:
nSubType = i % 2;
if(!nSubType)
nRideValue = atoi(tmpstr) * 2;
else
nRideValue = atoi(tmpstr) * 1;
break;
}
if (nRideValue > 10)
nRideValue = 1 + (nRideValue -10);
nSum += nRideValue;
}
if(nSum!=0)
{
nSum = 10 - (nSum %10);
}
return nSum;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -