社区
图形处理/算法
帖子详情
bitmap每行字节数搞不懂,急~~~
laozi888
2010-01-14 09:18:15
地球人都知道bmp图片的格式规定一个扫描行所占的字节数必须是4的倍数,不足的以0填充,
可是我就不明白这个式子是怎么推出来的:DataSizePerLine= (biWidth* biBitCount+31)/8;
另外这个又怎么理解:((((biWidth * biBitCount) + 31) & ~31) >> 3)
我数学不太好,。。。。。。。
谢谢大家!
...全文
276
10
打赏
收藏
bitmap每行字节数搞不懂,急~~~
地球人都知道bmp图片的格式规定一个扫描行所占的字节数必须是4的倍数,不足的以0填充, 可是我就不明白这个式子是怎么推出来的:DataSizePerLine= (biWidth* biBitCount+31)/8; 另外这个又怎么理解:((((biWidth * biBitCount) + 31) & ~31) >> 3) 我数学不太好,。。。。。。。 谢谢大家!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lambochan
2010-01-18
打赏
举报
回复
http://topic.csdn.net/u/20100116/17/4590fdf6-91c7-49a6-a76f-fa3effbae759.html
gamedragon
2010-01-18
打赏
举报
回复
[Quote=引用 5 楼 lsvine 的回复:]
引用 4 楼 heartofmaple 的回复:
((((biWidth * biBitCount) + 31) & ~31) >> 3)
这个也一样嘛,先补充(biWidth * biBitCount) + 31,然后把后边5位(2进制表示)置0,这样就可以被32整除了,而且得到的数不小于biWidth*biBitCount,再>>3得到的数就是被4整除的了.
然后把后边5位(2进制表示)置0 这个有必要吗?
自己瞎猜的 感觉 把倒数的4 5位置0 效果一样
[/Quote]
效果是一样。只不过置两个bit和置五个bit,都是一条指令,时间上没任何区别。
gamedragon
2010-01-18
打赏
举报
回复
[Quote=引用 5 楼 lsvine 的回复:]
引用 4 楼 heartofmaple 的回复:
((((biWidth * biBitCount) + 31) & ~31) >> 3)
这个也一样嘛,先补充(biWidth * biBitCount) + 31,然后把后边5位(2进制表示)置0,这样就可以被32整除了,而且得到的数不小于biWidth*biBitCount,再>>3得到的数就是被4整除的了.
然后把后边5位(2进制表示)置0 这个有必要吗?
自己瞎猜的 感觉 把倒数的4 5位置0 效果一样
[/Quote]
有必要,算一下就知道了。
gamedragon
2010-01-18
打赏
举报
回复
第一个式子是不对的,第二个才是对的。
4个字节每个字节8bit,总共32bit,+31再除8(整除,后面那个>>3也是一样的意思)
(0+31)/8 = 0,没问题
(1+31)/8 = 4,没问题,多一个bit就要多4个字节
...
(31+31)/8 = 7,出问题了,多出7个字节,不能被4整除
laozi888
2010-01-18
打赏
举报
回复
有谁明白的再给大伙解释一下哈~~~~~~~~~~~`
lsvine
2010-01-15
打赏
举报
回复
[Quote=引用 1 楼 hard9999 的回复:]
(biWidth* biBitCount+31)/8
这是整形的除法,只返回整数。
如果biWidth* biBitCount不是32的整数倍,那么最多差31位。
比如biWidth* biBitCount = 55,加9为64,就是8个字节了。31还剩余23的除32是0.不起作用。
[/Quote]
正解 不过第二个确实不好理解
lsvine
2010-01-15
打赏
举报
回复
[Quote=引用 4 楼 heartofmaple 的回复:]
((((biWidth * biBitCount) + 31) & ~31) >> 3)
这个也一样嘛,先补充(biWidth * biBitCount) + 31,然后把后边5位(2进制表示)置0,这样就可以被32整除了,而且得到的数不小于biWidth*biBitCount,再>>3得到的数就是被4整除的了.
[/Quote]
然后把后边5位(2进制表示)置0 这个有必要吗?
自己瞎猜的 感觉 把倒数的4 5位置0 效果一样
heartofmaple
2010-01-15
打赏
举报
回复
((((biWidth * biBitCount) + 31) & ~31) >> 3)
这个也一样嘛,先补充(biWidth * biBitCount) + 31,然后把后边5位(2进制表示)置0,这样就可以被32整除了,而且得到的数不小于biWidth*biBitCount,再>>3得到的数就是被4整除的了.
aaaa3105563
2010-01-14
打赏
举报
回复
up
hard9999
2010-01-14
打赏
举报
回复
(biWidth* biBitCount+31)/8
这是整形的除法,只返回整数。
如果biWidth* biBitCount不是32的整数倍,那么最多差31位。
比如biWidth* biBitCount = 55,加9为64,就是8个字节了。31还剩余23的除32是0.不起作用。
花了3个小时,终于搞懂
BitMap
了!!!
Java手写
BitMap
有这么个需求运算符分析下
BitMap
byte数组实现
BitMap
int数组实现
BitMap
BitMap
的缺点 有这么个需求 如何在3亿个整数(0~2亿)中判断某一个数是否存在?内存限制500M,一台机器。 在这里就用
BitMap
实现 ...
Bitmap
详解
bitmap
详解,一篇即可搞懂
bitmap
数据结构
【Android】
Bitmap
原理
1、把大文件分成多个小文件,分别排序,到最后合并成一个文件(我暂时还没搞懂这个方法,所以不会描述,有兴趣的看官可以自己去查一下); 2、另外一种方法就是著名的
bitmap
算法了。引用一下《编程珠玑》
Redis里的
BitMap
弄懂了,面试官都想为我打call~
本文还会去讲解
BitMap
对腾讯面试题的解决方案,并基于
BitMap
实现了仿GitHub提交次数的日历图,希望各位看官看的开心 1.位图简介 如果我们需要记录某一用户在一年中每天是否有登录我们的系统这一需求该如何完成呢?...
bitmap
的原理及使用python实现最基础的
bitmap
实际上
bitmap
的原理很简单,就是用位的方法来储存数值,也正是因此如果不是数值的话就不能用
bitmap
(当然通过什么方法来转化为数值也不是不行)。用位如何储存数值呢?我们知道,当我们随意向计算机输入一个数字,这...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章