2012-06-07 58 views
0

我创建了一个包含图像像素数据的BYTE数组。图像是灰度,每个像素的亮度是一个32位的整数。现在我想读取每个像素强度(32位整数),然后对每个像素强度执行一些操作并存储修改的像素强度(再次以32位整数值)。所以我的问题是如何从BYTE数组读取32位(或16位)整数。 (在VC++/MFC中工作)。从BYTE数组中读取一个32位整数。 VC++

谢谢。

+0

你知道数组的字节顺序吗? –

+0

你是如何创建BYTE数组而不知道如何执行此操作的? –

+0

不,我不知道。 – UNK

回答

2

使用memcpy可将数组中的数据从​​获取到int32_t(或uint32_t)的数组。

如果你不需要可移植性,你的体系结构可能允许将第一个​​的地址转换为int32_t*并在原地使用它。

如果你的所有数据总是来自一个文件,并且没有什么需要在单个字节上工作,你可以直接将它读入一个int32_t的数组中。

0

本·福格特

恕我直言,我完全与DllMain是因为不是强制性的这一说法。您提供的链接有误导性信息。

每个可执行模块(exe或DLL)必须有一个入口点。否则系统将无法启动任何程序。

因此定义和实现一个入口点是必须的。

UNK

如果您创建的Win32或MFC扩展DLL,向导插入入口点在两个项目。 MFC使用DllMain,而Win32使用的_tmain被定义为用于Unicode的wmain或用于ANSI的main。两者都只是名称的占位符,可以更改(但为什么打扰)。

您必须创建MFC规则DLL。这种类型的DLL也有一个入口点,但它不会在向导创建的任何源文件中公开。 它被称为__DllMainCRTStartup并驻留在crtdll.c中。

对于MFC规则DLL,请使用应用程序的InitInstance来初始化您的dll。顺便说一句:任何MFC应用程序也有WinMain,不会在向导生成的任何代码中公开。