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

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • katherine gomez

    katherine go

    1 Aralık 2011