一、定义
在VC6.0的Microsoft Visual Studio/VC98/Include/windef.h 里,定义了BYTE,WORD,DWORD
typedef unsigned long DWORD;
typedef unsigned char BYTE;
typedef unsigned short WORD;
在Visual C++ 6.0中,char型长度为1字节,short型长度为2字节,int和long型长度都为4字节,因此可以认为BYTE与WORD,DWORD定义的变量分别获得了1字节,2字节,4字节内存,正与BYTE与WORD,DWORD的字面意义相符。
即:
BYTE=unsigned char(完全等同): 8位
WORD=unsigned short(完全等同): 16位
DWORD=unsigned long(完全等同): 32位
下面是一些平时用得比较少的宏:
二、Window 宏
1.LOBYTE( 从给定16位值中提取低位字节)
BYTE LOBYTE(
WORD wValue // value from which low-order byte is retrieved
);
#define LOBYTE(w) ((BYTE) (w))
如:WORD w=-0x1234;//w在内存中以补码形式存储:0xedcc,即0xcc(低地址) 0xed(高地址)
printf("w的低位字节:%x/n",LOBYTE(w));//输 出:w的低位字节:cc
2.HIBYTE( 从给定16位值中提取高位字节)
BYTE HIBYTE(
WORD wValue // value from which high-order byte is retrieved
);
#define HIBYTE(w) ((BYTE) (((WORD) (w) >> 8) & 0xFF))
如:printf("w的高位字节:%x/n",HIBYTE(w));// 输出:w的高位字节:ed
3.LOWORD(从给定32位值中提取低位word)
WORD LOWORD(
DWORD dwValue // value from which low-order word is retrieved
);
#define LOWORD(l) ((WORD) (l))
如: DWORD l = 0x12345678;//l在内存中存储为:0x78,0x56,0x34,0x12
printf("l的低位字:%x/n",LOWORD(l));// 输出:l的低位字:5678
4.HIWORD(从给定32位值中提取高位word)
WORD HIWORD(
DWORD dwValue // value from which high-order word is retrieved
);
#define HIWORD(l) ((WORD) (((DWORD) (l) >> 16) & 0xFFFF))
如:printf("l的高位字:%x/n",HIWORD(l));//输出:l的高位字:1234
5.MAKEWORD(将两个给定的无符号字符值连接成为一个16位整数)
WORD MAKEWORD(
BYTE bLow, // low-order byte of short value
BYTE bHigh // high-order byte of short value
);
#define MAKEWORD(a, b) /
((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8))
如: BYTE bLow=0x34,bHigh=0x12;
printf("MAKEWORD(%x,%x)=%x/n",bLow,bHigh,MAKEWORD(bLow,bHigh));
输出结果为: MAKEWORD(34,12)=1234
6.MAKELONG(将两个给定的16位值连接成为一个32位整数)
DWORD MAKELONG(
WORD wLow, // low-order word of long value
WORD wHigh // high-order word of long value
);
#define MAKELONG(a, b) /
((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16))
如:WORD vLow=0x5678,vHigh=0x1234;
printf("MAKELONG(%x,%x)=%x/n",vLow,vHigh,MAKELONG(vLow,vHigh));
输出结果:MAKELONG(5678,1234)=12345678
分享到:
相关推荐
- **自定义函数格式**:VS2010采用了更现代的指针格式来定义自定义函数,这与VC++6.0中使用的格式不同。 #### 四、内置库的差异 VS2010相比VC++6.0,在内置库方面也有了明显的变化: - **Winsock库**:VS2010默认...
本项目利用Microsoft Visual C++ 6.0(简称VC++6.0)这个经典的集成开发环境,实现了字符型数与整型数的相乘操作。下面我们将详细探讨这一过程中的关键知识点。 首先,字符型数据在C++中用`char`关键字定义,它可以...
ErrorShow示例应用程序(本章后面将加以介绍)展示了如何调用该函数,以便将Microsoft公司定义的错误代码转换成它的文本描述。 有些人常常问我,Microsoft公司是否建立了一个主控列表,以显示每个Windows函数可能...
在本文中,我们将深入探讨如何使用VC++ 6.0打开和显示位图(BMP)文件。位图文件是一种常见的图像格式,广泛应用于各种图形处理任务。在VC++ 6.0环境下,通过理解BMP文件结构和利用C++编程技巧,我们可以实现对BMP...
在VC++ 6.0中使用串口控件进行通信是一个常见的任务,尤其在...以上就是使用VC++ 6.0和MSComm控件进行串口通信的基本步骤。通过理解这些概念,开发者可以构建功能丰富的串口通信应用程序,适用于各种实时数据传输场景。
在本文中,我们将深入探讨如何使用VC++ 6.0编写一个TCP协议的图片发送与接收程序。这个程序能够处理所有格式的图片,利用socket进行字节级别的数据传输。我们首先从TCP的基础知识开始,然后逐步讲解如何构建服务器端...
在本文档中,我们将深入探讨如何使用VC++6.0中的MSComm控件进行串口通信,这是一个在Microsoft Visual C++环境下实现串行通信的重要工具。MSComm控件提供了丰富的功能,包括设置串口参数、发送和接收数据,以及处理...
可以定义结构体来存储这些信息,例如BITMAPFILEHEADER和BITMAPINFOHEADER。 3. **分配内存**:根据位图信息头中的宽度和高度,计算图像数据所需的内存大小。通常,每个像素需要3个字节(红、绿、蓝三色)。 4. **...
该函数定义在math.h和stdlib.h头文件中。 4. atoi()函数:将字符串转换成整型数 atoi()函数的原形为:int atoi(const char *s)。该函数把s所指向的字符串转换成int类型。s的格式为:符号数字。返回值为字符串的转换...
通过这种转换,我们可以看到每个字节的值,而不仅仅是字符的打印形式,这对于理解数据结构、查找特定模式或者调试程序来说至关重要。 在给定的文件列表中,我们可以看到以下组件: 1. **HexEdit.cpp**: 这是主要的...
尤其是在处理特定领域,如气象数据的分析与读取时,VC++ 6.0凭借其灵活性和高效性,成为许多程序员的首选工具。本文将深入探讨如何使用VC++ 6.0来读取气象站的ZZ文件信息。 ZZ文件通常是一种特定格式的数据文件,...
在VC++6.0中,我们通常会使用位操作和类型转换来实现`float`到HEX以及HEX到`float`的转换。以下是关于这个主题的一些关键知识点: 1. **浮点数的二进制表示**:根据IEEE 754标准,一个32位的`float`数据类型分为三...
客户端则创建一个套接字,构造一个`MyData`对象,将其转换为字节流并发送到服务器,然后接收服务器的响应。 总结来说,使用VC6.0进行UDP网络程序设计,涉及到的主要知识点有:Winsock API的使用、UDP协议的特点、...
- **资源文件**:在处理rc文件中的字符串时,VC++6.0允许用户选择是否使用Unicode编码,如果选择Unicode,字符串将以UTF-16LE编码存储。 3. **VC++.NET (VC++ 9.0)** - **ANSI字符串**:在VC++.NET中,开发者可以...
根据错误提示可以定位到相应的函数定义,即`OnPagerScroll`和`OnPagerCalcSize`。 **解决方法:** 1. **修改函数参数类型:** 首先,需要修改这两个函数的参数类型。例如,将`OnPagerScroll`的参数类型从`...
如果在项目设置中启用了Unicode支持(通过定义`_UNICODE`宏),VC++6.0会使用宽字符类型`wchar_t`并以UTF-16编码处理字符串。 1.3.3 资源文件 资源文件(rc文件)中的字符串处理在VC++6.0中特别值得注意。即使项目...
3. **Windows 编译器环境**:VS2008 和 VC++6.0 分别代表了两种不同的编译器环境。VS2008 默认支持 Unicode 编译模式,这意味着默认情况下使用宽字符;而 VC++6.0 则默认使用 ASCI 编译模式,即使用普通的 ASCII ...
3. 字符处理错误,在VS2010中对符合C语言字符串处理函数和字符串类型转换的要求与VC6有所不同,可以按照错误提示逐个改动,也可以将常规默认配置中字符集由“使用Unicode字符集”改为“使用多字节字符集”。...
通常,数据是以字节形式接收的,需要进行解析和转换,例如,将接收到的AD转换结果ADCL和ADCH转换为有意义的数值并显示在编辑框中。 为了确保串口的正确使用,我们需要初始化串口参数,比如波特率、数据位、停止位和...