回复:这个事情大家觉得怎样?

emil128

  • 帖子

    271
  • 精华

    10
  • 被关注

    21

论坛等级:侠圣

注册时间:2011-05-16

普通 普通 如何晋级?

发布于 2014-01-17 12:45:39

17楼

其实从芳侠给的图上,偶看到最让人叫绝的是那高端大气上档次的“伪浮点数”。
余额的最小单位是分,所以把个十进制数除100,标个小数点就变成元了,完全无需转换成浮点数,真正高大上。

开个玩笑,从Y版让人恍然大悟的计算来看,我们分析下芳侠这张图有些什么内涵。
1、首先是错误怎么产生的,很明显如我刚才说的,把分除100变成元,其实也没什么问题,只是数据类型不能选择无符号32位而必须选有符号的32位(即DINT型)。我想应该是做画面的仁兄犯二了。
2、那么这个漏洞有多严重呢?是否如芳侠所虑,对交通卡的继续使用造成影响呢?我想主要是扣费判断时,数值是否正确。我猜想(没搞过只能猜)读卡器读取交通卡时应该读的是32个bit,然后以DWORD的方式存储,做扣费判断前转换为十进制数判断。关键就是这个转换,是否选了DINT,毕竟程序里要做大量判断的,我想只要做程序的兄弟没有和做画面的一样犯二,不至于会选错。真要犯这种错误,那可比画面选错严重多了。
3、我又想到为什么计算时不用浮点数呢?如果用浮点数会怎么样?单精度浮点数有7位有效数字,加减时有效数字超过7位就会被忽略。那需要多大的余额才会让你有机会免费蹭车?貌似余额1000万以上可以有机会让你扣除5元以下的时候被忽略。(当然充值5元以下也会被忽略,那就呵呵了)
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33277条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。