Мені потрібно змінити ціле число на двозначне шістнадцяткове значення в Java. Чи є для цього спосіб. Дякую
Моє найбільше число буде 63, а найменше - 0. Я хочу початковий нуль для малих значень.
Мені потрібно змінити ціле число на двозначне шістнадцяткове значення в Java. Чи є для цього спосіб. Дякую
Моє найбільше число буде 63, а найменше - 0. Я хочу початковий нуль для малих значень.
Відповіді:
String.format("%02X", value);
Якщо ви використовуєте X
замість того, x
як запропонував aristar , тоді вам не потрібно використовувати .toUpperCase()
.
Integer.toHexString(42);
Javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toHexString(int)
Зверніть увагу, що це може дати вам більше 2 цифр! (Ціле число - 4 байти, тому ви можете повернути 8 символів.)
Ось трохи хак, щоб отримати ваше заповнення, якщо ви абсолютно впевнені, що маєте справу лише з однобайтовими значеннями (255 або менше):
Integer.toHexString(0x100 | 42).substring(1)
Набагато більше (і кращих) рішень з лівими відступами цілих чисел (недесятковий формат) із нулями в Java .
String.format("%02X", (0xFF & value));
Використовуйте Integer.toHexString()
. Не забудьте заповнити початковий нуль, якщо у вас вийде лише одна цифра. Якщо ваше ціле число більше 255, ви отримаєте більше 2 цифр.
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(myInt));
if (sb.length() < 2) {
sb.insert(0, '0'); // pad with leading zero if needed
}
String hex = sb.toString();
StringBuilder
насправді вдосконалення? pastebin.com/KyS06JMz
я використовую це, щоб отримати рядок, що представляє еквівалентне шістнадцяткове значення цілого числа, відокремлене пробілом для кожного байта EX: шістнадцятковий val 260 у 4 байтах = 00 00 01 04
public static String getHexValString(Integer val, int bytePercision){
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(val));
while(sb.length() < bytePercision*2){
sb.insert(0,'0');// pad with leading zero
}
int l = sb.length(); // total string length before spaces
int r = l/2; //num of rquired iterations
for (int i=1; i < r; i++){
int x = l-(2*i); //space postion
sb.insert(x, ' ');
}
return sb.toString().toUpperCase();
}
public static void main(String []args){
System.out.println("hex val of 260 in 4 bytes = " + getHexValString(260,4));
}
За словами GabrielOshiro, якщо ви хочете, щоб формат цілого числа довжиною 8, спробуйте це
String.format("0x%08X", 20) //print 0x00000014