求高手!!
11 个解决方案
#1
#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
#2
先从BYTE来MAKEWORD,再用MAKELONG搞定。
#3
头文件:WinDef.h,VC自带的。
#4
好的,我试试!!先谢谢你了!
#5
注意大小字节序
#6
真是太感谢了,试了好多方法都没有成功,发现SDK好强大啊!!
#7
这回终于搞定老板给的任务了,谢谢答复者!!
#8
追问,三个字节可以写成整数吗(无符号整数!!)?
#9
char buf[4];
DWORD dwData=0;
字节序相同:可用 dwData=*(DWORD*)(buf);
如果不同,可一字节一字节来:
dwData=buf[3];
dwData<<=8;
dwData+=buf[2];
dwData<<=8;
dwData+=buf[1];
dwData<<=8;
dwData+=buf[0];
其它数据类型类似,只要把对应数据放到对应位置就行了. 甚至可以按bit来.
DWORD dwData=0;
字节序相同:可用 dwData=*(DWORD*)(buf);
如果不同,可一字节一字节来:
dwData=buf[3];
dwData<<=8;
dwData+=buf[2];
dwData<<=8;
dwData+=buf[1];
dwData<<=8;
dwData+=buf[0];
其它数据类型类似,只要把对应数据放到对应位置就行了. 甚至可以按bit来.
#10
不是很明白,现在是三个字节啊,咋整?
#11
定义一个char变量存储不就行了,设置为3个字节。
#1
#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
#2
先从BYTE来MAKEWORD,再用MAKELONG搞定。
#3
头文件:WinDef.h,VC自带的。
#4
好的,我试试!!先谢谢你了!
#5
注意大小字节序
#6
真是太感谢了,试了好多方法都没有成功,发现SDK好强大啊!!
#7
这回终于搞定老板给的任务了,谢谢答复者!!
#8
追问,三个字节可以写成整数吗(无符号整数!!)?
#9
char buf[4];
DWORD dwData=0;
字节序相同:可用 dwData=*(DWORD*)(buf);
如果不同,可一字节一字节来:
dwData=buf[3];
dwData<<=8;
dwData+=buf[2];
dwData<<=8;
dwData+=buf[1];
dwData<<=8;
dwData+=buf[0];
其它数据类型类似,只要把对应数据放到对应位置就行了. 甚至可以按bit来.
DWORD dwData=0;
字节序相同:可用 dwData=*(DWORD*)(buf);
如果不同,可一字节一字节来:
dwData=buf[3];
dwData<<=8;
dwData+=buf[2];
dwData<<=8;
dwData+=buf[1];
dwData<<=8;
dwData+=buf[0];
其它数据类型类似,只要把对应数据放到对应位置就行了. 甚至可以按bit来.
#10
不是很明白,现在是三个字节啊,咋整?
#11
定义一个char变量存储不就行了,设置为3个字节。