Параметры форматирования строки

Я переношу код C для xtend, и у меня есть 32-битное целое число. Поскольку Integer в Java имеет максимальное значение 0x7FFFFFFF, я решил использовать Long, потому что мне понадобится 0xFFFFFFFF.

Когда я его распечатаю,

Long value = 0xFFFFFFFFFFFFFFFF;
String::Format("0x%08X", value);

Я получаю output: 0xFFFFFFFFFFFFFFFF. Я ожидаю получить только 0xFFFFFFFF. Чтобы избавиться от ведущих F, я попытался сделать это:

value.bitwiseAnd(0x00000000FFFFFFFF)

Но выход все тот же. Как я могу отформатировать его в String::Format, чтобы он не отображал первый FFFFFFFF? Мне нужны только младшие 32 бита.


person chris yo    schedule 11.12.2013    source источник
comment
Код форматирования строки, который вы указали, недействителен для Java - вы действительно пишете Java или что-то еще?   -  person Jon Skeet    schedule 11.12.2013
comment
Привет Джон, я использую XTEND, но я использую класс Java Long.   -  person chris yo    schedule 11.12.2013
comment
И почему вы устанавливаете значение 0xFFFFFFFFFFFFFFFF, когда на самом деле вам нужно только 0xFFFFFFFF?   -  person Jon Skeet    schedule 11.12.2013


Ответы (1)


Попробуй это:

BigInteger in = new BigInteger("FFFFFFFFFFFFFFFF", 16);        
System.out.println(String.format("%.8s", String.format("%x", in)));
person Chandrayya G K    schedule 11.12.2013