该程序的功能:实现ASCII转换成BCD码函数,输入一个ASCII码 然后在文本框里把相应的BCD码显示出来。
问题1:out[i/2] = (c1<<4)|(c2&0xF); 这句话是什么意思?|这个符合起什么作用?
问题2:功能未能实现,只能显示个个乱码,烫烫烫烫123BYTE* Ascii2Bin(BYTE *out, BYTE *in, int len)
{
int i;
char c1,c2;
for(i=0;i<len;i+=2)
{
c1=in[i]-'0'; // 减去0,由字符型转成数字一个数字字符-‘0’的差值就是‘0-9’的数字
if (c1>9) c1-=7; // 由于字母"A"在Ascii中排在数字"9"后面相隔7个位置,所以如果前面减“0”后的数大于9,说明不是0-9的ascii码,而是字母,那就应该再减7
c2=in[i+1]-'0';
if (c2>9) c2-=7; //
out[i/2] = (c1<<4)|(c2&0xF); ?
}
return out;
} void CTest2Dlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(1);//从界面到变量
BYTE *Breturn;
BYTE temp[8],str1[8],str2[8];
Breturn=Ascii2Bin(str1,str2,9);
m_strData.Format("%s%d",Breturn,123);
UpdateData(0);//从变量到界面
}
问题1:out[i/2] = (c1<<4)|(c2&0xF); 这句话是什么意思?|这个符合起什么作用?
问题2:功能未能实现,只能显示个个乱码,烫烫烫烫123BYTE* Ascii2Bin(BYTE *out, BYTE *in, int len)
{
int i;
char c1,c2;
for(i=0;i<len;i+=2)
{
c1=in[i]-'0'; // 减去0,由字符型转成数字一个数字字符-‘0’的差值就是‘0-9’的数字
if (c1>9) c1-=7; // 由于字母"A"在Ascii中排在数字"9"后面相隔7个位置,所以如果前面减“0”后的数大于9,说明不是0-9的ascii码,而是字母,那就应该再减7
c2=in[i+1]-'0';
if (c2>9) c2-=7; //
out[i/2] = (c1<<4)|(c2&0xF); ?
}
return out;
} void CTest2Dlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(1);//从界面到变量
BYTE *Breturn;
BYTE temp[8],str1[8],str2[8];
Breturn=Ascii2Bin(str1,str2,9);
m_strData.Format("%s%d",Breturn,123);
UpdateData(0);//从变量到界面
}
解决方案 »
- 多表联合查询,A表多列如何对应B的1列?
- WTL8.1的例子在VS2008编译的时候不通过
- 请问C_Recordset与CRecordset类有什么区别?我想导出记录集到excel表中.
- 如何建立一个这样的list control控件?带有可打勾的多选择项小方块出现在第一列。并且如何来判断某一(几)项被选择,谢谢
- 在一个对话框上要加一张图片.然后一个button和进度条 要让进度条和button在图片的上面
- 真彩色图转化为256灰度图
- 组播问题
- 强制结帖合理吗?为什么提交的FAQ无人审核?
- 为什么没有图标?
- 用ShellExecuteEx\CreateProcess启动程序...怎么才能知道程序是否初始化完毕?
- 【在线等】窗口消失时,不会调用CFormView::DestroyWindow()函数
- 难道说可以多线程并行操作WSA_FLAG_OVERLAPPED标志的套接字
是你的算法错误,ASCII没有>127的,>127的是汉字。
半个汉字与其它字符在一起,造成乱码
没有基础知识,也没大脑逻辑!void CTest2Dlg::OnOK()
{
// TODO: Add extra validation here UpdateData(1);//从界面到变量
BYTE *Breturn;
BYTE temp[8],str1[8],str2[8]; // 你取的值在哪?
Breturn=Ascii2Bin(str1,str2,9); // str1,str2全是没有初始化的未知数!
m_strData.Format("%s%d",Breturn,123);
UpdateData(0);//从变量到界面
}
{
// TODO: Add extra validation here
UpdateData(1); //从界面到变量
BYTE Breturn[9];
memset(Breturn,0,9);
BYTE temp[8]={66,67,68,69,70,71,72,73};
Ascii2Bin(Breturn,temp,9);
m_strData.Format("%x%x%x%x%x%x%x%x",Breturn[0],Breturn[1],Breturn[2],Breturn[3],Breturn[4],Breturn[5],Breturn[6],Breturn[7]); UpdateData(0);//从变量到界面
}输出结果:bcdef012ce000