16,472
社区成员
发帖
与我相关
我的任务
分享
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]
一个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;
另外不太明白你第二点的意图。。。
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]
一个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该是什么?谢谢
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]
一个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]) ;
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该怎么做,麻烦你了
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]
一个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]
先结帖了。谢谢了,有后续问题再问哈
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;
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型。。。。那应该用哪个做好呢?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)