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

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • Fuse

    Fuse

    21 Kasım 2005
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006