MFC中CString转BYTE

苏幕烟雨 2014-07-30 03:52:32
在MFC定义了CString transmitStr,以及BYTE buf[20],现在想发送transmitStr为01T0 aaaa dddd dddd(其中有a,d都只能取值0和1,是写PGA280的寄存器命令符),现在想把transmitStr赋值给buf[20],不知如何实现,还有就是buf[0]到底可以存几位进去,谢谢了
...全文
713 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
brk1985 2014-07-31
  • 打赏
  • 举报
回复
引用 26 楼 xucheng271 的回复:
[quote=引用 24 楼 brk1985 的回复:] [quote=引用 21 楼 xucheng271 的回复:] [quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote]
引用 21 楼 xucheng271 的回复:
[quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote] 44十进制表示是68,18十进制表示是24,4438十进制是17432,你断点调试查下数值看看。。。 int iValue=0; iValue |= (buf[0]<<8) ; iValue |= (buf[0]) ;[/quote] 1、问下用VC++6.0怎么做,我输入0x4418,用cout输出的是002BD99C。。。 2、我是把它输出到单片机上测试倒是对的,输入0x4418与4418结果是一样的 ,buf[0]=0x44;buf[1]=0x18,或者像你所说的buf[0]=68;buf[1]=24,就是再想问下判断buf该是什么?谢谢[/quote] int iValue=0x4418;===则对应整数17432.。。。 作为字符串,肯定得去掉0x,只输入4418即可。。。

BYTE buf[20];
CString strTemp="4418";
int iValue;
sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
另外不太明白你第二点的意图。。。
苏幕烟雨 2014-07-31
  • 打赏
  • 举报
回复
引用 24 楼 brk1985 的回复:
[quote=引用 21 楼 xucheng271 的回复:] [quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote]
引用 21 楼 xucheng271 的回复:
[quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote] 44十进制表示是68,18十进制表示是24,4438十进制是17432,你断点调试查下数值看看。。。 int iValue=0; iValue |= (buf[0]<<8) ; iValue |= (buf[0]) ;[/quote] 1、问下用VC++6.0怎么做,我输入0x4418,用cout输出的是002BD99C。。。 2、我是把它输出到单片机上测试倒是对的,输入0x4418与4418结果是一样的 ,buf[0]=0x44;buf[1]=0x18,或者像你所说的buf[0]=68;buf[1]=24,就是再想问下判断buf该是什么?谢谢
苏幕烟雨 2014-07-31
  • 打赏
  • 举报
回复
引用 23 楼 lx624909677 的回复:
[quote=引用 22 楼 xucheng271 的回复:] [quote=引用 19 楼 lx624909677 的回复:] [quote=引用 2 楼 xucheng271 的回复:] [quote=引用 1 楼 lx624909677 的回复:] unicode还是多字符集
应该是unicode,不太明白。。。。[/quote] 在项目属性中看一下。。。[/quote] 用的VC++6.0,应该是ASCII的。。。。[/quote] http://blog.sina.com.cn/s/blog_5ebddaf8010155w4.html参考这里[/quote] 嗯嗯,谢谢了
brk1985 2014-07-31
  • 打赏
  • 举报
回复
引用 21 楼 xucheng271 的回复:
[quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote]
引用 21 楼 xucheng271 的回复:
[quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote] 44十进制表示是68,18十进制表示是24,4438十进制是17432,你断点调试查下数值看看。。。 int iValue=0; iValue |= (buf[0]<<8) ; iValue |= (buf[0]) ;
lx624909677 2014-07-31
  • 打赏
  • 举报
回复
引用 22 楼 xucheng271 的回复:
[quote=引用 19 楼 lx624909677 的回复:] [quote=引用 2 楼 xucheng271 的回复:] [quote=引用 1 楼 lx624909677 的回复:] unicode还是多字符集
应该是unicode,不太明白。。。。[/quote] 在项目属性中看一下。。。[/quote] 用的VC++6.0,应该是ASCII的。。。。[/quote] http://blog.sina.com.cn/s/blog_5ebddaf8010155w4.html参考这里
苏幕烟雨 2014-07-31
  • 打赏
  • 举报
回复
引用 19 楼 lx624909677 的回复:
[quote=引用 2 楼 xucheng271 的回复:] [quote=引用 1 楼 lx624909677 的回复:] unicode还是多字符集
应该是unicode,不太明白。。。。[/quote] 在项目属性中看一下。。。[/quote] 用的VC++6.0,应该是ASCII的。。。。
苏幕烟雨 2014-07-31
  • 打赏
  • 举报
回复
引用 20 楼 brk1985 的回复:
[quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了
苏幕烟雨 2014-07-31
  • 打赏
  • 举报
回复
引用 27 楼 brk1985 的回复:
[quote=引用 26 楼 xucheng271 的回复:] [quote=引用 24 楼 brk1985 的回复:] [quote=引用 21 楼 xucheng271 的回复:] [quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote]
引用 21 楼 xucheng271 的回复:
[quote=引用 20 楼 brk1985 的回复:] [quote=引用 18 楼 brk1985 的回复:] [quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
[/quote] 按照你说的真的做出结果了,输入0x4418,得到buf[0]=0x44;buf[1]=0x18,0x是不是代表了buf[i]存的是十六进制而已? 我想问一下此时的buf等于多少?怎么感觉不是0x4418,另外我如果想把buf[0]与buf[1]合成0x4418该怎么做,麻烦你了[/quote] 44十进制表示是68,18十进制表示是24,4438十进制是17432,你断点调试查下数值看看。。。 int iValue=0; iValue |= (buf[0]<<8) ; iValue |= (buf[0]) ;[/quote] 1、问下用VC++6.0怎么做,我输入0x4418,用cout输出的是002BD99C。。。 2、我是把它输出到单片机上测试倒是对的,输入0x4418与4418结果是一样的 ,buf[0]=0x44;buf[1]=0x18,或者像你所说的buf[0]=68;buf[1]=24,就是再想问下判断buf该是什么?谢谢[/quote] int iValue=0x4418;===则对应整数17432.。。。 作为字符串,肯定得去掉0x,只输入4418即可。。。

BYTE buf[20];
CString strTemp="4418";
int iValue;
sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
另外不太明白你第二点的意图。。。[/quote] 先结帖了。谢谢了,有后续问题再问哈
brk1985 2014-07-30
  • 打赏
  • 举报
回复
引用 18 楼 brk1985 的回复:
[quote=引用 12 楼 xucheng271 的回复:] [quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18; [/quote] 刚刚在VS2008测试了下,在unicode下也是可以的

	BYTE buf[20];
	CString strTemp=_T("4418");
	int iValue;
	swscanf(strTemp,_T("%x"),&iValue);//unicode下有swscanf,可以试试,转换后iValue十六进制表示为0x00004418
	buf[0]= (BYTE)(((short)iValue>>8)&0xFF);//0x44;
	buf[1]= (BYTE)(((short)iValue)&0xFF);//0x18;
lx624909677 2014-07-30
  • 打赏
  • 举报
回复
引用 2 楼 xucheng271 的回复:
[quote=引用 1 楼 lx624909677 的回复:] unicode还是多字符集
应该是unicode,不太明白。。。。[/quote] 在项目属性中看一下。。。
brk1985 2014-07-30
  • 打赏
  • 举报
回复
引用 12 楼 xucheng271 的回复:
[quote=引用 6 楼 brk1985 的回复:] 01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?[/quote] 可以的。。。 unicode感觉要麻烦些,,, 多字符集下可以用 CString strTemp=0x4418; int iValue; sscanf(strTemp,"%x",&iValue);//unicode下有swscanf,可以试试 buf[0]= ((short)iValue>8)&0xFF;//0x44; buf[1]= ((short)iValue)&0xFF;//0x18;
苏幕烟雨 2014-07-30
  • 打赏
  • 举报
回复
引用 16 楼 xucheng271 的回复:
[quote=引用 14 楼 dingxz105090 的回复:] 。。。搞这么复杂,是二进制数 0x20 : 0010 0000
DWORD size = transmitStr.GetLength();
       for(int j=0;j<size/2;j++)
	{
		transmitStr=transmitStr.Mid(j*2,2);        //取两个字符
		buf[j]=strtol(transmitStr,NULL,16);  //转换存储
	}
怎么只有buf[0]的数据是对的,buf[1]怎么写?(假设发送数据0x4418)[/quote] 发现strtol返回long int型。。。。那应该用哪个做好呢?
苏幕烟雨 2014-07-30
  • 打赏
  • 举报
回复
引用 14 楼 dingxz105090 的回复:
。。。搞这么复杂,是二进制数 0x20 : 0010 0000
DWORD size = transmitStr.GetLength();
       for(int j=0;j<size/2;j++)
	{
		transmitStr=transmitStr.Mid(j*2,2);        //取两个字符
		buf[j]=strtol(transmitStr,NULL,16);  //转换存储
	}
怎么只有buf[0]的数据是对的,buf[1]怎么写?(假设发送数据0x4418)
苏幕烟雨 2014-07-30
  • 打赏
  • 举报
回复
引用 14 楼 dingxz105090 的回复:
。。。搞这么复杂,是二进制数 0x20 : 0010 0000
哦哦,好像是我理解错了。读跟取类型相同就可以了,数据应该不会有变化,我先去试试,谢谢你
凌乱哥 2014-07-30
  • 打赏
  • 举报
回复
。。。搞这么复杂,是二进制数 0x20 : 0010 0000
苏幕烟雨 2014-07-30
  • 打赏
  • 举报
回复
引用 11 楼 dingxz105090 的回复:
每个buf[i]写一个字节,空格就是0x20,0就是0x30..................
谢谢,你说的存储的是ASCII码,正常还是存储的是010101这样的二进制数吗?
苏幕烟雨 2014-07-30
  • 打赏
  • 举报
回复
引用 6 楼 brk1985 的回复:
01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
一个buf[i]放8位。 例子发送的是0x4418,是不是可以1个里面放8位(即44放buf[0],18放buf[1])?
凌乱哥 2014-07-30
  • 打赏
  • 举报
回复
每个buf[i]写一个字节,空格就是0x20,0就是0x30..................
苏幕烟雨 2014-07-30
  • 打赏
  • 举报
回复
引用 8 楼 dingxz105090 的回复:

int iLen = transmitStr.GetLength();
for(int i = 0 ; i < iLen ; i ++)
	buf[i] = transmitStr.GetAt(i);
问下你这个是实现每个buf[i]写1位吗?空格怎么说?
苏幕烟雨 2014-07-30
  • 打赏
  • 举报
回复
引用 6 楼 brk1985 的回复:
01T0 aaaa dddd dddd buf[0]可以存储8个二进制位(0或1),,,可以存储2个0-F之间的字符(比如0xFF),但是只可以存储1个F(十进制15)以上的字符;你这里buf[0]还是存储1个字符(即使是0或1)方便些。。。
刚又好好看了下datasheet,发现T是个变量,一般为0,问下该怎么把4位放到一个buf[i]中 0100 aaaa dddd dddd
加载更多回复(8)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧