读书人

各位早晨,问个关于16进制的有关问题

发布时间: 2012-02-04 15:43:09 作者: rapoo

各位早晨,问个关于16进制的问题
各位早,我最近在写个程序,通过串口的485通讯与一些硬件设备连接通信,设备那边是一些单片机,所以要求我往串口写入的数据应该为16进制.
我的程序接收到一些数据,然后发向串口,数据是用CString类型接收的,比如CString str = "a123 ",现在要定义一个char buf[4].
请问应该如何使buf[0]、buf[1]、buf[2]、buf[3]分别存放的是a、1、2、3 的16进制?

[解决办法]
在str中取出单个字符,用strtoul转换成整型
[解决办法]
TCHAR GetAt( int nIndex ) const行不?
[解决办法]
多少进制是显示时用的,机器内统一用二进制.
[解决办法]
char[0]=(char)strtoul( "a ",NULL,16);
char[1]=(char)strtoul( "1 ",NULL,16);
......
[解决办法]
char c = str.GetAt[i];
if (c > = '0 ' && c <= '9 ')
buf[i] = c - '0 ';
else if (c > = 'a ' && c <= 'f ')
buf[i] = 10 + c - 'a ';
else if (c > = 'A ' && c <= 'F ')
buf[i] = 10 + c - 'A ';
else
//error
[解决办法]
写一个判断的
if(buf <0x3a)// 数字字符
buf-=0x30;
else if(buf <0x47)//大写的ABCDEF
buf-=0x37;
else (buf <0x67)//小写的abcdef
buf-=0x57
[解决办法]
CString str = "a123 ";
unsigned long aaaa;
sscanf(str, "%x ",&aaaa);

读书人网 >VC/MFC

热点推荐