MFC中给IDC_EDIT1中定义一个cstring变量m_string, 要求在EDIT1中输入16进制的字符串如:0102 之类的.
如果直接给m_string 赋值 是这样表示16进制字符串嘛? : "\X01\X02"
小弟对这些(进制.类型转换)的基本概念理解不深,请大家讲清楚.
把m_string的值转换成(BYTE * ) 怎么转换?运算之后.再把BYTE结果输出到EDIT2上面的cstring类型的m_OUT上面来....?
PS: 小弟想加强这方面的基本知识,谢谢大家 给出好的书籍和资料.
如果直接给m_string 赋值 是这样表示16进制字符串嘛? : "\X01\X02"
小弟对这些(进制.类型转换)的基本概念理解不深,请大家讲清楚.
把m_string的值转换成(BYTE * ) 怎么转换?运算之后.再把BYTE结果输出到EDIT2上面的cstring类型的m_OUT上面来....?
PS: 小弟想加强这方面的基本知识,谢谢大家 给出好的书籍和资料.
要想显示出来 那就str.Format("%x",Num16);
CString 对象---> 16进制 ---> BYTE ..是这意思吧..?
2 ;怎么把STRING转成BYTE *
3 ;BYTE[16进制的ascii字符串] 输出到m_OUT中
其实转换起来很简单,从数值到字符串可以直接用_itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow这些函数,从字符串到数值,如果是十进制的就可以直接用atof, _wtof, atoi, _wtoi, _atoi64, _wtoi64, atol, _wtol
你这种情况是字符串是16进制表示,转换成数值就需要字节写个函数BYTE GetByte(char cHigh, char cLow)
{
if (cHigh >= '0' && cHigh <= 'F' && cLow >= '0' && cLow <= 'F')
{
return BYTE((cHigh - '0') * 16 + (cLow - '0'));
//或者return BYTE((cHigh - '0') < 4 + (cLow - '0'));
//或者return BYTE(((cHigh - '0') < 4) & (cLow - '0'));
} return 0;
}
TO 4 :输入的就是16进制: 10E02D,你的思路是对的
都是CString对象..!-----
1. strtol();
2. Format();
3. Format();
TO 10 :
FORMAT()的用法是:
str.Format( "%02x ",P );
这样可以把字符串 数组内 字符输出嘛?
MSDN都有例子肯定比我写的好..! hehe自己查下就会了
不是太难..
sscanf("34","%x",nV1); 转换后 nV1 = 0x34;
...
LZ最好继承CEdit,输入时过滤其它字符
转换(上面的链接)
输出用m_OUT.Format();
string DesStr = "{12 03 3a...}"; //协议的原始数据;然后对DesStr提取... //提取方法就不说了..譬如: 提取3a后..string str = "3a"; //3a为16进制, 16进制就是无符号的int<<==>>MFC的BYTE型
char *ptr;
BYTE p[100];
CString temstr;int index = strtol(str.c_str(), &ptr, 16);
p[0] = (BYTE)index;p[0] 就是想要的数据了..输出到Edit控件, 就不难了吧..
上面Saiman的方法没试过
应该也是可行的.. 貌似比我想的要简单点..! hehe----temstr //edit控件变量temstr.Format(...);记得 Updatedata(TRUE);
感冒脑袋不转了..!
16进制和ASCII码之间的关系谁能再说清楚点呀~
但int变量里的‘0’与字符串里的‘0’(实际是48)是不一样的。
忘了问了.1 怎么把"1A2B3C4D"转换成ASCII码呀?
2 想赋给m_string 16进制字符串:如想表示成0X11 0X22 一个字节的数连接一个字节的输入应该怎样?
你想输出 1进制 \ 2进制...
都可以!
"\X01\X02\X03 " 这是字符串,相当于"X01X02X03"
"\X01\X02\X03 " 这个字符串与16进制没有必然联系。
BYTE bt = 0x1A;
char ch[] ="0x1A"; //或CString str("0x1A");
char ch1[] ="1A";
这三个互不一样。
ch1,ch已经是ASCII了。
a.cpp 内函数A
B.CPP 内函数B
主函数: #INCLUDE "B.CPP" 就可以直接用A函数嘛.需要加在EXTERN _STDCALL _DECLSPEC 嘛?
谁能解释哈......多给分!
----------------
A.CPPVOID FUNA(){}
----------------
A.HPP
VOID FUNA();
---------------B.CPPVOID FUNB(){}
---------------
B.HPP
VOID FUNB();
---------------#INCLUDE "A.HPP"
#INCLUDE "B.HPP"
C.CPPMAIN(){
FUNA();
FUNC();
}
---------------