从BYTE数组中读取32位整数。 VC ++

时间:2012-06-07 15:17:59

标签: c++ visual-c++

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

谢谢。

2 个答案:

答案 0 :(得分:2)

使用memcpyBYTE数组中的数据转换为int32_t(或uint32_t)数组。

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

如果您的所有数据始终来自某个文件,并且不需要处理单个字节,则可以直接将其读取到int32_t数组中。

答案 1 :(得分:0)

Ben Voigt

在充分尊重的情况下,我完全不同意DLLMain不是强制性的声明。您提供的链接有误导性信息。

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

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

<强> UNK

如果您创建Win32或MFC扩展dll,向导会在两个项目中插入入口点。 MFC使用DllMain和Win32使用_tmain,其定义为Unicode的wmain或ANSI的main。两者都只是名称的占位符,可以更改(但为什么要麻烦)。

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

对于MFC常规DLL,使用app的InitInstance来初始化你的dll。

顺便说一句:任何MFC应用程序也有WinMain,它不会在向导生成的任何代码中公开。