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

  • DominicFear

    DominicFear

    30 Kasım 2006
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • Peyton

    Peyton

    28 Aralık 2008