字符转换的问题?

yidaoyishi 2004-08-02 04:37:26
BYTE buf[12];
str="112233445566AABBCCDDEEFF"
如何转换成下面结果
buf[]={0x11,0x22,0x33,0x44,0x55,0x66,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF}
请赐教!
...全文
93 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
szclm 2004-08-02
支持lixiaosan(小三)
回复
yening0914 2004-08-02
char a[]="112233445566AABBCCDDEEFF" ;
AnsiString b,c;
int d,e;
char buf[100];
for(int i=0;i<sizeof(a)/2;i++)
{

sscanf(&a[i*2],"%02x",&d);
buf[i]=(char)d;
}
回复
yening0914 2004-08-02
这是BCB的代码,改改就能用呀!
AnsiString a="112233445566AABBCCDDEEFF" ;
AnsiString b,c;
int d,e;
char buf[100];
for(int i=0;i<a.Length()/2;i++)
{
b=AnsiString(a[2*i+1])+AnsiString(a[2*i+2]);
sscanf(b.c_str(),"%02x",&d);
buf[i]=(char)d;
}
回复
windyloft 2004-08-02
毎次取両個字符然后在前面加上"0x"
回复
yeedward 2004-08-02
buf[i] = strtoul(a, NULL, 16);
最后那句这样写也可以吧
sscanf(a, "%x", buf[i] );
回复
successq 2004-08-02
这个很简单,利用递归调用就可以分离开了。
串口命令发送十进制和十六进制其实效果是一样的,比如发送0x0a和10的效果是一样的,所以转化的时候转换成十进制就可以了。
CString str="112233445566AABBCCDDEEFF";
BYTE buff[12];
for(int i=0;i<12;i++)
{
buff[i]=atoi(str.Left(2);
str=str.Right(str.GetLength()-2);
}
回复
lixiaosan 2004-08-02
BYTE buf[12];
CString str="112233445566AABBCCDDEEFF";

char a[3];
for(int i=0; i<12; i++)
{
strcpy(a, str.Left(2));
str = str.Mid(2);
buf[i] = strtoul(a, NULL, 16);
}
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-02 04:37
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……