📄 utility.cpp
字号:
#include "stdafx.h"
#include "kqin.h"
#include "utility.h"
CString CUtility::chars2hex_str(CString ch,BOOL bBlank)
{
int i=0;int len=ch.GetLength();
CString s1="";
for(;i<len;i++)
{
s1+=ch2hex((ch[i]&0xf0)>>4);
s1+=ch2hex(ch[i]&0x0f);
if(bBlank)s1+=" ";
}
return s1;
}
CString CUtility::chars2hex_str(unsigned char* ch,int len,BOOL bBlank)
{
int i=0;
CString s1="";
for(i=0;i<len;i++)
{
s1+=ch2hex((ch[i]&0xf0)>>4);
s1+=ch2hex(ch[i]&0x0f);
if(bBlank)s1+=" ";
}
return s1;
}
char CUtility::ch2hex(char ch)
{
if(ch<=9)ch+='0';
else ch+='W';
return ch;
}
int CUtility::hex_str2chars(CString st,char* buf)
{
int i=0,n;
CString cs;
st.MakeLower();
st.Remove(' ');
n=st.GetLength()/2;
for(;i<n;i++)
{
cs=st.Mid(2*i);
buf[i]=st2char(cs);
}
return n;
}
char CUtility::st2char(CString st)
{
st.MakeLower();
return s2char(st[0])*0x10 + s2char(st[1]);
}
char CUtility::s2char(char s)
{
if(s<='9')return s-'0';
else return s-'W';
}
/*
1. 卡面号转换为卡内号
输入:11位卡面号(数字,如是ASCII码在函数中需转换位数字)。
输出:4位HEX卡内号,高字节在前。*/
void CUtility::card_to_hex(unsigned char *ptr)
{
unsigned char temp[12];
unsigned long id;
int i;
temp[0]=*(ptr+9);
temp[1]=*(ptr+10);
temp[2]=*(ptr+7);
temp[3]=*(ptr+8);
temp[4]=*(ptr+5);
temp[5]=*(ptr+6);
temp[6]=*(ptr+3);
temp[7]=*(ptr+4);
temp[8]=*(ptr+1);
temp[9]=*(ptr+2);
id=0;
for(i=0;i<10;i++)
id=id*10+temp[i]-'0';
*((unsigned long *)temp)=id;
for(i=0;i<4;i++)
*(ptr+i)=temp[i];
}
/*2. 卡内号转换为卡面号
输人:4位HEX卡内号,高字节在前。
输出:11位卡面号,数字ASCII码。
*/
void CUtility::card_to_bcd(unsigned char *ptr)
{
unsigned char scard[11];
unsigned char i,j;
unsigned int m;
unsigned long card_id;
for(i=0;i<4;i++)
scard[i] = ptr[3-i];
card_id = *((unsigned long *)scard);
for(i=0;i<10;i++)
{
scard[9-i] = card_id%10;
card_id /= 10;
}
scard[10] = scard[1];
scard[1] = scard[8];
scard[8] = scard[3];
scard[3] = scard[6];
scard[6] = scard[5];
scard[5] = scard[4];
scard[4] = scard[7];
scard[7] = scard[2];
scard[2] = scard[9];
scard[9] = scard[0];
m = scard[1] + scard[3] + scard[5] + scard[7] + scard[9];
for (i=2;i<11;i+=2)
{
j = (scard[i]) * 2;
if (j > 9)
m += j - 9;
else
m += j;
}
while (m > 9)
m -= 10;
if (m == 0)
scard[0] = 0;
else
scard[0] = 10 - m;
for(i=0;i<11;i++)
*(ptr+i) = scard[i] + '0';
*(ptr+11)=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -