12 Mayıs 2010, ÇARŞAMBA
Kod Onaltılık bayt dönüştürmek İçin Java
Bayt bir dizi var. Bu dizinin her bayt Dizesi karşılık gelen onaltılık değerleri dönüştürülmesini istiyorum.
Java herhangi bir işlevi Onaltılık bayt dizisi dönüştürmek için var mı ?
CEVAP
12 Mayıs 2010, ÇARŞAMBA
byte[] bytes = {-1, 0, 1, 2, 3 };
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("X ", b));
}
System.out.println(sb.toString());
// prints "FF 00 01 02 03 "
Ayrıca Bkz
java.util.Formatter
syntax%[flags][width]conversion
- Bayrak
'0'
- sonuç sıfır-sıfır olacak 2
genişlik- Dönüşüm
'X'
- sonuç onaltılık bir tamsayı, büyük harf biçimlendirilmiş
- Bayrak
Soru metninde bakarak, bu istenen ne olabilir:
String[] arr = {"-1", "0", "10", "20" };
for (int i = 0; i < arr.length; i ) {
arr[i] = String.format("x", Byte.parseByte(arr[i]));
}
System.out.println(java.util.Arrays.toString(arr));
// prints "[ff, 00, 0a, 14]"
Bazı cevaplar burada Integer.toHexString(int)
; bu yapılabilir, ama bazı uyarılar ile kullanır. int
, genişleyen ilkel bir dönüşüm işareti uzantısı içerir byte
bağımsız değişkeni için yapılan bir parametre olduğu için.
byte b = -1;
System.out.println(Integer.toHexString(b));
// prints "ffffffff"
8-bit Java imzalandı byte
, işareti genişletilmiş bir 32-bit int
. Etkin bir şekilde bu işareti uzantısı geri almak için, bir 0xFF
byte
maske olabilir.
byte b = -1;
System.out.println(Integer.toHexString(b & 0xFF));
// prints "ff"
toHexString
kullanarak başka bir sorun, sıfır ped değil:
byte b = 10;
System.out.println(Integer.toHexString(b & 0xFF));
// prints "a"
Her iki faktör birlikte String.format
çözüm daha tercih yapmak gerekir.
Referanslar
- JLS 4.2.1 Integral Types and Values
127
dahil-128
byte
için
- JLS 5.1.2 Widening Primitive Conversion
Bunu Paylaş:
Java nasıl insan okunabilir biçime bay...
Nasıl Java hex bir dize bir bayt dizis...
Bayt içine Java Dize dönüştürmek için ...
Nasıl Java UTF8 bayt dizileri için Diz...
Nasıl sayısal değeri (Java) için bir b...