松下PLC串口编程之16进制高低位互换问题
Mewtocol通信协议中提到,发送的数据要转换成16进制,还要高低位互换,如:
%01#WDD00100 3412**Cr,其中3412是高低位互换后的16进制数,实际数值为十进制4660。二进制为:0001 0010 0011 0100,协议讲发送的是ASCII码,每个字符应该是8位吧,手册中将3412解释为二进制只有16位?
另外请教:有符号十进制数转换为16进制再高低位互换的方法。
我用的是循环移位的方法,负数及大数不行。
CString str;
str.Format("%.4x",m_inV);//输入m_inV为int型
SetDlgItemText(IDC_16Hex,str);
WORD ch;
ch=m_inV;
WORD temp;
temp=ch<<8|ch>>8;
CString str16;
str16.Format("%x",temp);
SetDlgItemText(IDC_Hex16,str16);
输出多于4位。
谢谢!