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

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011
  • Phandroid

    Phandroid

    26 Ocak 2009