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

  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • EvilControllers

    EvilControll

    20 Ocak 2008