Java'da bir tamsayı değerini 2 basamaklı onaltılık değere değiştirmem gerekiyor, bunun için herhangi bir yolu var mı? Teşekkürler
En büyük sayım 63 ve en küçük 0 olacak. Küçük değerler için baştaki sıfır istiyorum.
Java'da bir tamsayı değerini 2 basamaklı onaltılık değere değiştirmem gerekiyor, bunun için herhangi bir yolu var mı? Teşekkürler
En büyük sayım 63 ve en küçük 0 olacak. Küçük değerler için baştaki sıfır istiyorum.
Yanıtlar:
String.format("%02X", value);
Eğer kullanırsanız X
yerine x
aristar önerdiği gibi , o zaman kullanımına gerek yoktur .toUpperCase()
.
Integer.toHexString(42);
Javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toHexString(int)
Bununla birlikte, bunun size 2'den fazla rakam verebileceğini unutmayın! (Bir Tamsayı 4 bayttır, bu nedenle potansiyel olarak 8 karakter geri alabilirsiniz.)
Yalnızca tek baytlık değerlerle (255 veya daha az) uğraştığınızdan kesinlikle emin olduğunuz sürece, dolgunuzu almak için bir parça hack verelim:
Integer.toHexString(0x100 | 42).substring(1)
Java'da sıfırlarla Sol doldurma tamsayılarında (ondalık olmayan format) çok daha fazla (ve daha iyi) çözüm .
String.format("%02X", (0xFF & value));
Kullanın Integer.toHexString()
. Sonunda yalnızca bir rakam varsa, başında sıfır ile doldurmayı unutmayın. Tam sayınız 255'ten büyükse, 2'den fazla basamak elde edersiniz.
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
gerçekten bir gelişme mi? pastebin.com/KyS06JMz
Bunu, her bayt için boşlukla ayrılmış bir tamsayının eşdeğer onaltılık değerini temsil eden bir dize elde etmek için kullanıyorum EX: 4 baytta 260'ın onaltılık değeri = 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'ya göre, tamsayıyı 8 uzunluğa formatlamak istiyorsanız
String.format("0x%08X", 20) //print 0x00000014