CString BCD码转asc(char *BCD,int bytes)
{
unsigned char h=0,l=0,hh=240,ll=15;
char *DPT_ASC=(char*)malloc(bytes);
for (int i = 0,j=0;i <7; i++)
{
h=BCD[i];
l=BCD[i];
h=h & hh; // 高位
l=l & ll; // 低位
h=h>>4;
if(h<=9)h=h+48;
else h=h+55;
if(l<=9)l=l+48;
else l=l+55;
DPT_ASC[j]=h;
DPT_ASC[j+1]=l;
j=j+2;
}
CString DPT;
DPT.Format("%s",DPT_ASC);
return DPT;
}
CString Asc码ToBcd(char *BCD,int bytes)
{
unsigned char h=0,l=0,hh=240,ll=15;
char *DPT_ASC=(char*)malloc(bytes);
for (int i = 0,j=0;i <7; i++)
{
h=BCD[j];
l=BCD[j+1];
h=h | hh;
l=l | ll;
h=h<<4;
if (h>=9) h=h-48;
else h=h-55;
if(l>=9) l=l-45;
else l=l-55;
DPT_ASC[i]=h+l;
j+j+2;
}
CString DPT;
DPT.Format("%s",DPT_ASC);
return DPT;
}
AscToBcd 函数 我这样写怎么不对呢?正确的应该怎么写啊。我按照上面的那个函数反着写的啊...
{
unsigned char h=0,l=0,hh=240,ll=15;
char *DPT_ASC=(char*)malloc(bytes);
for (int i = 0,j=0;i <7; i++)
{
h=BCD[i];
l=BCD[i];
h=h & hh; // 高位
l=l & ll; // 低位
h=h>>4;
if(h<=9)h=h+48;
else h=h+55;
if(l<=9)l=l+48;
else l=l+55;
DPT_ASC[j]=h;
DPT_ASC[j+1]=l;
j=j+2;
}
CString DPT;
DPT.Format("%s",DPT_ASC);
return DPT;
}
CString Asc码ToBcd(char *BCD,int bytes)
{
unsigned char h=0,l=0,hh=240,ll=15;
char *DPT_ASC=(char*)malloc(bytes);
for (int i = 0,j=0;i <7; i++)
{
h=BCD[j];
l=BCD[j+1];
h=h | hh;
l=l | ll;
h=h<<4;
if (h>=9) h=h-48;
else h=h-55;
if(l>=9) l=l-45;
else l=l-55;
DPT_ASC[i]=h+l;
j+j+2;
}
CString DPT;
DPT.Format("%s",DPT_ASC);
return DPT;
}
AscToBcd 函数 我这样写怎么不对呢?正确的应该怎么写啊。我按照上面的那个函数反着写的啊...
解决方案 »
- 16位BMP图片像素点提取问题
- (急)Socket 接收失败错误10035
- csdn空间改版了,就是运行好慢
- 请推荐一个DVD、VCD播放控件。
- 如何在Access中输入长的字符串,请求各位,谢谢。
- 在动态改变ADODC控件对数据库连接时遇到了问题!急!!!
- 再问一个关于视图文档的初级弱智问题
- 请教一个关于socket的小问题?
- 用ReadFile和WriteFile无法复制隐藏文件
- COM 不会灭亡,但它将不得不面对 .NET 类,虽然 COM 和 Windows SDK 还没有完全丧失生命力,但你必须根据另一个模型来编写代码
- SendMessage()如何将子窗口成员变量的数值发送给父窗口?
- 请问大家,外网的服务器如何用TCP连接局域网内的机器?
'6' - '0' * 0x10 + '1' - '0' = 'a'
unsigned char h=0,l=0,ll=15;
char *tstr, *thex;
tstr=(char *)malloc(2);
thex=(char *)malloc(2);
thex="41";
for (int i=0,j=0;i<1;i++)
{
h=thex[j];
l=thex[j+1];
if(h<=9) h=h & ll;
else if (h<='F') h=h-55;
else h=h-87;
h<<=4;
if (l<=9) l=l≪
else if (l<='F') l=l-55;
else l=l-87;
tstr[j]=h;
tstr[j+1]=l;
j=j+2; } aa.Format ("%s",tstr);
AfxMessageBox(aa); 麻烦帮忙改改吧,或者告诉我中间转换的方法 而且发现碰到0就退出了。