我发现,在APDU消息中,当您必须表示511之类的数字时,您将写0x01 0xFF而不是0x1FF。如果要重新创建数字,请执行操作
short number = (short) (b1<<8 | b2 & 0xFF);
其中b1为0x01,b2为0xFF。为什么我们必须进行此操作,并且b1 << 8和b2&0xFF的意义是什么?谢谢!
首先,我将重命名您的变量。 b1将被称为B1,b2的重要性较低,在下面的代码中将被称为B0。然后b31到b0将改为指示位位置,因为这是我习惯的。 b31是整数的最高有效位,b0是整数的最低有效位。
请注意,所有Java数学运算都会得到int
。这对于通常不带int
的Java Card运行时来说是一件非常麻烦的事,但让我们继续进行说明。