Самый эффективный способ преобразования значения шестнадцатеричной строки в Java с форматомJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Самый эффективный способ преобразования значения шестнадцатеричной строки в Java с форматом

Сообщение Anonymous »

У меня есть следующий код Java, который увеличивает значение шестнадцатеричного значения и возвращает строку в следующем формате (где x — возрастающее шестнадцатеричное значение, а 7 — литерал):

Код: Выделить всё

xxxx-7xxx-xxxx
Значение увеличивается слева направо следующим образом и состоит из 12 символов:

Код: Выделить всё

0000-7000-0001
0000-7000-0002
...
0000-7fff-ffff
0001-7000-0000
Код:

Код: Выделить всё

public class GeneratorTemplate {
private static final AtomicLong COUNTER = new AtomicLong(0);

public static String generateTemplate() {
// incrementing the counter
long currentValue = COUNTER.getAndIncrement();

// get 11 character (not 12 because 7 is a literal and appended) hex value represented as string
String rawResult = String.format("%011X", currentValue & 0xFFFFFFFFFFFL);

// append and format values
return (rawResult.substring(0, 4) +
"-7" +
rawResult.substring(4, 7) +
"-" +
rawResult.substring(7)).toLowerCase();

}

public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println(generateTemplate());
}
}
}
Это работает, но я уверен, что это неэффективно.
Проблема производительности связана с тем фактом, что я добавляю 7, дефисы и строчные буквы вручную. Я думаю, что если я сделаю это в методе format(), моя производительность увеличится. Кроме того, такой код был бы более понятным.
Я пытался сделать это в одну строку, но безуспешно. Этот код явно неверен, и мне интересно, как правильно использовать метод format(), чтобы мне не приходилось ничего добавлять вручную:

Код: Выделить всё

return String.format("%04X-7%03X-%04X", currentValue & 0xFFFFL, currentValue & 0xFFFL, currentValue & 0xFFFFL);
Может ли кто-нибудь уточнить, можно ли это сделать с помощью метода format() и что представляет собой число F в параметре (я, очевидно, понимаю, что это шестнадцатеричный код, но сколько там должно быть букв)?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/785 ... ith-format
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»