SORU
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ş

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • friendz.net

    friendz.net

    29 EKİM 2010