Мне нужно изменить целочисленное значение на двузначное шестнадцатеричное значение в 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)
Обратите внимание, что это может дать вам более двух цифр! (Целое число составляет 4 байта, поэтому вы потенциально можете вернуть 8 символов.)
Вот небольшой прием, чтобы получить заполнение, если вы абсолютно уверены, что имеете дело только с однобайтовыми значениями (255 или меньше):
Integer.toHexString(0x100 | 42).substring(1)
Множество других (и лучших) решений с левым заполнением целых чисел (недесятичный формат) нулями в Java .
String.format("%02X", (0xFF & value));
Используйте Integer.toHexString()
. Не забудьте заполнить начальным нулем, если в итоге вы получите только одну цифру. Если ваше целое число больше 255, вы получите более двух цифр.
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: шестнадцатеричное значение 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));
}
По словам Габриэля Оширо, если вы хотите форматировать целое число длиной 8, попробуйте это
String.format("0x%08X", 20) //print 0x00000014