打印

求教大家啊 以QQ币做酬劳

[复制链接]
1778|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ql1007|  楼主 | 2010-9-6 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
键盘上输入数字 1 2 3 4.。怎么转成十进制形式比如输1 2 3 4.。转成1234,最大能输8个数字我试了下 用long型 超出了内存大小,因为底层加密算法特别浩资源 占50%内存,而PIC这个只有6个BANK ,512个字节的RAM,我用LONG型 结果编译时发现占用了90%多以上 无法编译通过看看你有什么算法比较好的 。。。

我原来是这么写的:
//unsigned long Scount[]={1,10,100,1000,10000,100000,1000000,10000000};
/*for(l=0;l<jc;l++)//查表计算出转10进制的数 JC是按键输入几个数字的记录变量
{
    Num+=Scount[l]*(unsigned long)(l_tmpdate3[(jc-1)-l]);
}*/

由于这样写 开销所剩无几,无法编译通过,求高人给写个转换代码,帮帮小菜,小菜愿意Q币做为小小偿谢 ,谢谢了。
沙发
ql1007|  楼主 | 2010-9-6 15:28 | 只看该作者
l_tmpdate3 是按键键值保存数组

使用特权

评论回复
板凳
yewuyi| | 2010-9-6 16:51 | 只看该作者
为何那么复杂?移位不行吗?

使用特权

评论回复
地板
ql1007|  楼主 | 2010-9-7 10:02 | 只看该作者
版主终于关注我了。。帮帮忙啊 版主 怎么移位啊,能否给小菜写个移位代码啊?
十分感谢啊

使用特权

评论回复
5
yewuyi| | 2010-9-7 10:19 | 只看该作者
你的目的是否为:把通过键盘输入的8个数字按照个、十、百、千。。。的顺序组合成一个数值?

使用特权

评论回复
6
ql1007|  楼主 | 2010-9-7 10:23 | 只看该作者
是的,但是不一定是8个数 几个数 是由变量J记录的。。。版主给看看 怎么移位操作啊

使用特权

评论回复
7
yewuyi| | 2010-9-7 11:08 | 只看该作者
最大8个数?

假如定义为32位的一个变量temp,输入的数字为keyval(n),n=0~7,
因为你输入的keyval(n)取值范围在0~9内,从数值范围的角度看,半个字节即可,而32位的变量temp正好是由4个字节组成,由此我们可规定keyval(n)对应于temp的4n~4n+4位,如此,就可以通过移位的方式实现这些操作。

使用特权

评论回复
8
ql1007|  楼主 | 2010-9-7 11:14 | 只看该作者
版主啊 PIC我用的这款 是8位的 PIC16LF1937,无法定义32位的变量 不用LONG 不行吧

使用特权

评论回复
9
ql1007|  楼主 | 2010-9-7 11:15 | 只看该作者
还请版主有空帮我写个转10进制这代码啊 。。。

使用特权

评论回复
10
yewuyi| | 2010-9-7 11:44 | 只看该作者
版主啊 PIC我用的这款 是8位的 PIC16LF1937,无法定义32位的变量 不用LONG 不行吧
ql1007 发表于 2010-9-7 11:14



不要开玩笑,类如unsigned long int不就是32位吗?
MCU怎么可能不支持32位变量?只要编译器支持,MCU自然就是支持的。

至于代码,都已经说的这么清楚了?竟然还让别人给你写!
米饭要自己吃,总不至于让别人给你喂饭吧。。。

使用特权

评论回复
11
hxlwjn| | 2010-9-7 12:03 | 只看该作者
本帖最后由 hxlwjn 于 2010-9-7 12:04 编辑

unsigned long num = 0;
for(j= jc-1; j>=0;j--)
   num = 10*num+l_tmpdate3[j];
为什么不这样呢?

使用特权

评论回复
12
hxlwjn| | 2010-9-7 12:06 | 只看该作者
你定义的Scount[]数组太占RAM了。

使用特权

评论回复
13
ql1007|  楼主 | 2010-9-7 12:45 | 只看该作者
是啊 的确是我的Scount数组太占RAM,回复11楼 ,您的方法是对的 不过反了 呵呵 我改了下 的确能编译过去了 十分感谢啊 ,

使用特权

评论回复
14
sytu_chyq| | 2010-9-7 14:57 | 只看该作者
unsigned long num = 0;
for(j = 0; j <= jc-1; j++)
   num = (num << 4) | keyval;

使用特权

评论回复
15
e掾木| | 2010-9-8 08:25 | 只看该作者
自己去www.piclist.com下载

使用特权

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

本版积分规则

35

主题

122

帖子

0

粉丝