小编Har*_*nex的帖子

使二进制加法的行为类似于(压缩)十进制加法

我目前正在开发一个限制性环境,其中允许的唯一类型是:

byte, byte[], short, short[].
Run Code Online (Sandbox Code Playgroud)

我几乎可以肯定我无法导入外部库,因为我正在研究JavaCard,并且已经尝试过这样的事情,但结果并不好.

所以,在这里我必须管理一个大小为6字节的字节数组,它代表卡的余额(欧元),最后一个字节是美分,但现在这并不重要.

鉴于我无法访问整数,我不知道如何以我想要的方式添加两个字节.

我们举个例子:

用户输入(添加)0x00 0x00 0x00 0x00 0x00 0x57,这对用户来说意味着增加57美分.我们现在说平衡是0x00 ... 0x26.

我希望能够创建一种方法,可以修改平衡数组(带有进位),添加后,分数为83,并表示0x83.我也必须处理减法,但我想我之后可以自己解决这个问题.

我的第一个猜测是掩盖每个字节的每个数字,并且首先单独工作,但这让我无处可去.

我显然不是要求一个完整的解决方案,因为我相信我的问题几乎是不可能的,但如果你对如何处理这个问题有任何想法,我将非常感激.

那么如何在Java Card上相互添加两个包含二进制编码小数的数组呢?


编辑1:常见的数组如下所示:

{ 0x00 , 0x00 , 0x01, 0x52, 0x45, 0x52}
Run Code Online (Sandbox Code Playgroud)

并且代表15 254€和52美分的大端BCD编码整数.


编辑2:嗯,我怀疑,我的卡不支持包framework.math,所以我不能使用BCDUtil或BigNumbers,这将是有用的.

java javacard bcd

6
推荐指数
1
解决办法
175
查看次数

标签 统计

bcd ×1

java ×1

javacard ×1