MFC如何将一个unsigned int数组转换为bitmap?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC如何将一个unsigned int数组转换为bitmap?相关的知识,希望对你有一定的参考价值。
求具体方法,谢谢大大们了喵。
参考技术A CBitmap::SetBitmapBitsDWORD
SetBitmapBits(
DWORD
dwCount,
const
void*
lpBits
);
返回值:调用成功时返回设置位图位值的字节数,否则为0。
参数:
dwCount
指定由lpBits指向的字节数。
lpBits
指向一个BYTE类型的数组,数组中记录了要拷贝到CBitmap对象的位值。
说明:本函数用lpBits指定的位值设置位图的位值。
如何将 C unsigned int 中的底部 n 位清零?
【中文标题】如何将 C unsigned int 中的底部 n 位清零?【英文标题】:How to zero out bottom n bits in a C unsigned int? 【发布时间】:2013-02-10 06:54:07 【问题描述】:我正在尝试编写自己的 C 楼函数。我被困在这个代码细节上。我只想知道如何将 unsigned int 的底部 n 位归零。
例如,要将 51.5 舍入到 51.0,我需要将底部 18 位归零,并保留前 14 位。由于它是一个底函数,我想制作一个掩码以将底部归零(23 减去指数)来自浮点表示的位。我知道如何为这样的个别情况制作面具,但我不确定如何对其进行编码以使其适用于所有人。请帮忙。
【问题讨论】:
int floor(float number) return (int)number;
工作
下定决心 - 数字和无符号是短的还是浮点数?你试过什么?
抱歉,刚刚编辑。该数字是一个无符号整数
我正在尝试将 unsigned int 的底部位归零。
我已经做了一些例子。要将 51.5 舍入到 51.0,我需要保留数字的前 14 位。所以我会做数字和FFF20000。但由于每次都会有所不同,我不确定如何编写适合所有人的东西。
【参考方案1】:
一个更简单的方法就是这样做:
value = (value >> bits) << bits
因为左移会用零填充它,而不是其中的任何内容。
【讨论】:
我特别喜欢这个。非常优雅。 非常感谢你们!! 对不起,你能解释一下这里的比特和价值吗?在我试图保留前 14 位的示例中,掩码是否应该是这样的: value = (value >> 14) 【参考方案2】:将一个数字左移 N 位。减一。反转位。还有你需要屏蔽的号码。
1 << 14 = 00000000000000000010000000000000
-1 = 00000000000000000001111111111111
~ = 11111111111111111110000000000000
当你and
时,掩码中的 1 将保留输入,掩码中的 0 会将结果设置为 0。
【讨论】:
以上是关于MFC如何将一个unsigned int数组转换为bitmap?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 unsigned long long int 转换为 unsigned char*?
如何将 unsigned char* 转换为 unsigned long long int?