Ich muss einen ganzzahligen Wert in Java in einen zweistelligen Hex-Wert ändern. Gibt es dafür eine Möglichkeit? Vielen Dank
Meine größte Zahl ist 63 und die kleinste ist 0. Ich möchte eine führende Null für kleine Werte.
Ich muss einen ganzzahligen Wert in Java in einen zweistelligen Hex-Wert ändern. Gibt es dafür eine Möglichkeit? Vielen Dank
Meine größte Zahl ist 63 und die kleinste ist 0. Ich möchte eine führende Null für kleine Werte.
Antworten:
String.format("%02X", value);
Wenn Sie X
anstelle von x
wie von Aristar vorgeschlagen verwenden , müssen Sie nicht verwenden .toUpperCase()
.
Integer.toHexString(42);
Javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toHexString(int)
Beachten Sie jedoch, dass Sie dadurch möglicherweise mehr als 2 Ziffern erhalten! (Eine Ganzzahl besteht aus 4 Bytes, sodass Sie möglicherweise 8 Zeichen zurückerhalten können.)
Hier ist ein kleiner Hack, um Ihre Auffüllung zu erhalten, solange Sie absolut sicher sind, dass Sie nur mit Einzelbyte-Werten (255 oder weniger) arbeiten:
Integer.toHexString(0x100 | 42).substring(1)
Viele weitere (und bessere) Lösungen bei Left Padding Integer (Nicht-Dezimal-Format) mit Nullen in Java .
String.format("%02X", (0xFF & value));
Verwenden Sie Integer.toHexString()
. Vergessen Sie nicht, mit einer führenden Null aufzufüllen, wenn Sie nur eine Ziffer haben. Wenn Ihre Ganzzahl größer als 255 ist, erhalten Sie mehr als 2 Ziffern.
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
tatsächlich eine Verbesserung? pastebin.com/KyS06JMz
Ich benutze dies, um eine Zeichenfolge zu erhalten, die den äquivalenten Hex-Wert einer durch Leerzeichen getrennten Ganzzahl für jedes Byte EX darstellt: Hex-Wert von 260 in 4 Bytes = 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));
}
Laut GabrielOshiro versuchen Sie dies, wenn Sie eine Ganzzahl bis zur Länge 8 formatieren möchten
String.format("0x%08X", 20) //print 0x00000014