2011-12-12 6 views
3

В java-карте используются только небольшие типы данных (байт и короткий). Я пытаюсь преобразовать байт в короткий, чтобы я мог использовать его для проверки состояния и т. Д. Когда байт преобразуется в короткий, используя тип cast в java-карте, он дает мне другое отрицательное число. Скажите, пожалуйста, как конвертировать (11111111), который хранит ff в одном байте на короткий.Преобразование байта в short в JavaCard

Я использую:

  1. смарт-карты типа = контакт карта
  2. с помощью карты Java Card 2.2.2
  3. с JCOP использованием APDU

ответ

1

не язык Java Card просто как Java? Тогда вы можете написать

shortvar = bytevar&0xFF;

+0

Вы очень близки. Большинство javaCards не поддерживают int, поэтому необходимо добавить несколько сокращений: shortvar = (short) (bytevar & (short) 0xFF) '. – Robert

+0

да его право вы можете использовать –

+0

@Robert не нужно для этого внутреннего приведения до значения 0xFF, хотя я делаю это короткой константой (например, 'private static final short UNSIGNED_BYTE_MAX = 0xFF;') –

1

Вы можете использовать javacard.framework.Util.makeShort (байт b1, b2 байт) метод.

0

Я знаю, что у вас уже есть ответ, но насколько я знаю, хороший способ - использовать метод javacard.framework.Util makeShort, когда вы дадите 2 байта, и он вернется коротким.