SORU
26 EYLÜL 2008, Cuma


Bir bayt dizisi Java kullanarak bir hex dökümü dize gösterimine dönüştürmek?

Bir bayt dizisine hex değerleri temsil eden uzun bir dize (bir dökümü), dönüştürmek için arıyorum.

Aynı soru burada yazan kişi daha iyi ifade edemezdim:

http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21062554.html

Ama dışarıda orijinal ederim cümle kendimce: sanırım bir dize "00A0BF" bunu istiyorum yorumlanan byte[] {0x00,0xA0,0xBf} ne yapayım?

Java bir acemi olduğumu ve Bigınteger kullanarak ve önde gelen hex sıfır kollayan sona erdi. Ama çirkin olduğunu düşünüyorum ve basit bir şey kaçırıyorum eminim...

CEVAP
26 EYLÜL 2008, Cuma


İşte, daha önce yayınlanan daha iyi olduğunu düşündüğüm bir çözüm

public static byte[] hexStringToByteArray(String s) {
    int len = s.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i  = 2) {
        data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                               Character.digit(s.charAt(i 1), 16));
    }
    return data;
}

Bir gelişmedir nedenleri:

  • Sıfırları (Bigınteger aksine) ile güvenli ve negatif değerler byte (Bayt aksine.parseByte)

  • char[] bir Dize dönüştürmek veya her bayt için StringBuilder ve String nesneleri yaratmaz.

Eğer argüman için güvenli değilse assert veya özel durumları ile de kontrol değişkeni eklemek için çekinmeyin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigBoyTV

    BigBoyTV

    25 EYLÜL 2013
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • TomSka

    TomSka

    30 Mayıs 2006