打印

ad值处理问题,8位 0-255 十六进制 转换到0-100

[复制链接]
4368|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xingudongde|  楼主 | 2010-6-20 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xwj| | 2010-6-20 10:09 | 只看该作者
应该是转成0~99吧?

直接乘以100,然后取高字节即可。
要0~100的话就先加一再计算

使用特权

评论回复
板凳
xwj| | 2010-6-20 10:12 | 只看该作者
要0~100的话要乘以100,然后带进位加上50,取高字节

使用特权

评论回复
地板
cgd| | 2010-6-20 10:14 | 只看该作者
路过

使用特权

评论回复
5
xingudongde|  楼主 | 2010-6-20 10:18 | 只看该作者
2# xwj

比如说是ad值是255转换成100,如何计算,我有点不理解啊,朋友

使用特权

评论回复
6
xwj| | 2010-6-20 10:40 | 只看该作者
255*100=25500=0x639c,丢弃低字节就是99
这只是单字节乘法而已,一般CPU都支持的

使用特权

评论回复
7
maychang| | 2010-6-20 10:45 | 只看该作者
5楼:
0-255转换成0-100,要线性的转换,乘个系数就行了。
这个系数显然是100/255=0.39215686……。
为避免使用浮点数,可以先乘一个定点数,再去掉低字节。去掉低字节就是除以256。

使用特权

评论回复
8
xingudongde|  楼主 | 2010-6-21 21:12 | 只看该作者
6# xwj 这是什么原理呢
楼主,为什么乘以100取低字节呢,我试了,这样可以,我想搞明白为什么这样可以,程序中我是乘以一百后,与0xff00与,然后右移八位,这样可以吗?

使用特权

评论回复
9
xwj| | 2010-6-21 21:15 | 只看该作者
看7楼,
不过我的系数是100/256,能明白吗?

使用特权

评论回复
10
xingudongde|  楼主 | 2010-6-22 08:04 | 只看该作者
9# xwj   如果偶是0-1024到0-100显示,又是如何考虑的u麻烦请教下,得出的乘机,如何有好的办法得到高八位,用什么算法比较好

使用特权

评论回复
11
ayb_ice| | 2010-6-22 08:07 | 只看该作者
*100/255

使用特权

评论回复
12
xuyiyi| | 2010-6-22 08:30 | 只看该作者
9# xwj   如果偶是0-1024到0-100显示,又是如何考虑的u麻烦请教下,得出的乘机,如何有好的办法得到高八位,用什么算法比较好
xingudongde 发表于 2010-6-22 08:04


*100/1024 ,  即乘以100, 丢弃低字节(相当于除256), , 再将数据右移2位(除4), 即可.

使用特权

评论回复
13
123654789| | 2010-6-22 08:50 | 只看该作者
最近碰到一个棘手问题0-255转换成0-100显示的好算法。大家都给点主义
谢谢了啊
xingudongde 发表于 2010-6-20 10:02


查表 然后用0-255作为下标  读取  结果就出来的拉

做一个256数表也不是很浪费FLASH的

使用特权

评论回复
14
xingudongde|  楼主 | 2010-6-22 08:53 | 只看该作者
uint  x,k;
        x=(ad_data+1)*100;
        x=x&0xff00;
        x=x>>8;

这个怎么运行不起来啊,求更正

使用特权

评论回复
15
ayb_ice| | 2010-6-22 08:57 | 只看该作者
简单的数学问题
遇到问题还是要先多想

使用特权

评论回复
16
xingudongde|  楼主 | 2010-6-22 09:44 | 只看该作者
明白了,谢谢各位的不吝指教!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

47

帖子

1

粉丝