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

  • Amena

    Amena

    15 Kasım 2006
  • fireflame65

    fireflame65

    27 Mart 2007
  • Michael Neal

    Michael Neal

    2 Mayıs 2009