请教各位,问一个关于类型转换的问题,急!

mammoth0626 2011-05-29 05:52:50
最近在做毕业设计,关于图像隐藏的,其中有一个算法,是将灰度值转为二进制,按位进行变换。得到的新二进制灰度值再转为原来的十进制。
我定义了一个BYTE类型的bMap[i]用来将图像进行灰度化,得到的值也是灰度值,现在请问大家,怎么将这个BYTE类型转为二进制数,并且将每一位取出来进行计算?运算完了以后怎么再转回原来的十进制?
请大家帮帮我,比较急!
...全文
63 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
redui 2011-05-29
  • 打赏
  • 举报
回复
整数就是整数,在计算机上都是二进制的,所谓的十进制、十六进制也只是显示给人看的,对计算机来说都一个球样
czydxj 2011-05-29
  • 打赏
  • 举报
回复
直接用就可以了呀,或&或|来进行位运算!
zgl7903 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mammoth0626 的回复:]
C/C++ code

BYTE bMap[256];
int i;
for (i = 0; i < 256; i ++)
{
// 计算该颜色对应的灰度值
bMap[i] = (BYTE)(0.299 * lpbmi->bmiColors[i].rgbRed +

0.587 * lpbm……
[/Quote]
数据在计算机中本来就是二进制方式存储的啊 ,
估计LZ是想说图像二值化吧,即把图像变成仅黑和白的吧?
假设灰度范围0-255,设定一个阈值,如127,那么大于127的可以判为白色,反之为黑

mammoth0626 2011-05-29
  • 打赏
  • 举报
回复

BYTE bMap[256];
int i;
for (i = 0; i < 256; i ++)
{
// 计算该颜色对应的灰度值
bMap[i] = (BYTE)(0.299 * lpbmi->bmiColors[i].rgbRed +

0.587 * lpbmi->bmiColors[i].rgbGreen +

0.114 * lpbmi->bmiColors[i].rgbBlue + 0.5);

这个bMap[i]里的值就是二进制的吗?
羽飞 2011-05-29
  • 打赏
  • 举报
回复
不明白楼主怎么和十进制扯到一块了
获取二进制位用位运算& |就行了
King_hhuang 2011-05-29
  • 打赏
  • 举报
回复
BYTE类型怎么还要转二进制啊,本来数据在计算机中都是以二进制存储的啊,值为0x01,0000 0001,1的byte变量本来就是相等的啊

你想取出每一位进行计算,你可以用&(按位与)或者移位(>>)运算符啊

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧